2

私はdjangoを初めて使用し、複数のタイプの登録を必要とし、2つの別々のフォームを必要とし、allauthを利用するcookiecutter-djangoのテンプレートに基づいてWebサイトに取り組んでいます。

allauth のメール確認とパスワード確認を保持したいと思います。

私は解決策を探し回って、これに行き着きました: 複数のサインアップ、django-allauthを使用した登録フォーム

それは私の問題を解決しません。私の場合、サインアップフォームは同じままです。おそらく、フォームでモデルを使用しようとしているからでしょうか?

カスタマイズされたログオンフォームでの私の試みは次のとおりです。

cookiecutter のアプリ ユーザーで/

models.py で:

class Proveedor(models.Model):
    TIENE_EMPRESA = (
        ('S','Si'),
        ('M','No'),
    )
    SEXO = (
        ('F','Femenina'),
        ('M','Masculino'),
    )
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    oficios = []
    ubicacion = models.CharField(_('Ubicacion'),max_length=255)
    ubicaciones_servicios = []
    tiene_empresa = models.CharField(_('Tienes Empresa?'),max_length=1, choices=TIENE_EMPRESA)
    foto = models.ImageField(_('Foto'),upload_to=None, blank=False)
    email = models.EmailField(_('Email'),max_length=254)
    fecha_nacimiento = models.DateField(_('Fecha de nacimiento'), default=datetime.datetime.now(), blank=True)
    sexo = models.CharField(_('Sexo'),max_length=1, choices=SEXO)
    telefono = models.CharField(_('Numero de Telefono'),max_length=10)

    fotos_trabajos_realizados = []
    descripcion_forma_trabajar = models.TextField(_('Descripcion de Forma de Trabajar'),null=True, blank=True)

    class Meta:
        db_table = 'proveedor'
        permissions = (
            ("menu_proveedor", "Puede ver menu de proveedor"),
    )

formularios.py (フォーム):

class FormularioProveedor(SignupForm):
    class Meta:
        model = Proveedor
        fields = '__all__'

def save(self, request, user):
    user = super(FormularioProveedor, self).save(request)
    user.sexo = self.cleaned_data['sexo']
    user.tiene_empresa = self.cleaned_data['tiene_empresa']
    user.save()

views.py で:

class ProveedorRegistroView(SignupView):
    template_name = 'account/form_proveedor.html'
    form_class = FormularioProveedor
    redirect_field_name = 'proximo'
    view_name = 'registroproveedor'
    success_url = None

def get_context_data(self, **kwargs):
    ret = super(ProveedorRegistroView, self).get_context_data(**kwargs)
    ret.update(self.kwargs)
    return ret

registroproveedor = ProveedorRegistroView.as_view()

テスト用のパッケージ ディレクトリの urls.py:

url(r'registroproveedor', registroproveedor, name='registroproveedor')

最後に、テンプレート自体:

{% extends "account/base.html" %}

{% load i18n %}
{% load crispy_forms_tags %}

{% block title %}{% trans "Registro de Proveedor" %}{% endblock title %}

{% block content %}
<form id="signup_form" method="post" action="{% url 'registroproveedor'  %}">
  {% csrf_token %}
  {{ form|crispy }}
</form>
{% endblock %}

設定で自分のフォームをポイントし、 ACCOUNT_SIGNUP_FORM_CLASS を割り当てて、新しいフィールドを表示するだけでした...しかし、それは私が本当に必要としている、または望んでいるものではありません。allauth が提供する機能と cookiecutter-django が提供するテンプレートを引き続き利用できる、複数の登録フォームが必要です。現在、このテンプレートに基づいているため、間違っている可能性があることが多すぎます。助けをいただければ幸いです。ありがとう。

4

1 に答える 1