模型:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=500, blank=True)
nationality = models.CharField(max_length=20)
def __str__(self):
return self.user.first_name
@receiver(post_save, sender=User)
def create_user_profile(self, sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(self, sender, instance, **kwargs):
instance.profile.save()
表单:
from allauth.account.forms import SignupForm
class CustomSignupForm(SignupForm):
first_name = forms.CharField(max_length=100)
last_name = forms.CharField(max_length=100)
class Meta:
model = Profile
fields = ('first_name', 'last_name', 'nationality', 'bio')
def signup(self, request, user):
# Save your user
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.save()
user.profile.nationality = self.cleaned_data['nationality']
user.profile.gender = self.cleaned_data['bio']
user.profile.save()
视图:
ACCOUNT_FORMS = {'signup': 'myproject.forms.CustomSignupForm',}
这个过程没有成功。 错误是:模型类all_auth.models.Profile没有声明一个明确的app_label并且不在INSTALLED_APPS中的应用程序中。
我该如何解决它?或者,我如何使用django-allauth添加更多字段到SignupForm?
allauth
而不是all_auth
吗? - dirkgrotenall_auth
在INSTALLED_APPS
中吗? - dirkgrotensave
函数,而不是signup
。 请参考此链接 https://django-allauth.readthedocs.io/en/latest/forms.html#signup-allauth-account-forms-signupform - aijogja