私は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 が提供するテンプレートを引き続き利用できる、複数の登録フォームが必要です。現在、このテンプレートに基づいているため、間違っている可能性があることが多すぎます。助けをいただければ幸いです。ありがとう。