jho*_*rab 4 django django-models django-forms django-allauth
楷模:
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()
Run Code Online (Sandbox Code Playgroud)
形式:
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()
Run Code Online (Sandbox Code Playgroud)
浏览次数:
ACCOUNT_FORMS = {'signup': 'myproject.forms.CustomSignupForm',}
Run Code Online (Sandbox Code Playgroud)
这个过程不行。错误是:模型类 all_auth.models.Profile 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中。
我该如何解决?或者,如何使用 django-allauth 通过 SignupForm 添加更多字段?
小智 6
创建一个应用,比如账户,就有这个代码,但是创建这个代码后才需要创建数据库,在项目中进行第一次迁移更准确
\n\naccounts/models.py\n\nfrom django.db import models\nfrom django.contrib.auth.models import AbstractUser\n\nclass CustomUser(AbstractUser):\n phone = models.CharField(max_length=12)\n\n\naccounts/forms.py\n\nfrom allauth.account.forms import SignupForm\nfrom django import forms\nfrom .models import *\n\nclass SimpleSignupForm(SignupForm):\n phone = forms.CharField(max_length=12, label='\xd0\xa2\xd0\xb5\xd0\xbb\xd0\xb5\xd1\x84\xd0\xbe\xd0\xbd')\n def save(self, request):\n user = super(SimpleSignupForm, self).save(request)\n user.phone = self.cleaned_data['phone']\n user.save()\n return user\n\n\nsettings.py\n...\nACCOUNT_FORMS = {'signup': 'accounts.forms.SimpleSignupForm'}\nAUTH_USER_MODEL = 'accounts.CustomUser'\n\n\naccounts/admin.py\n\nfrom django.contrib import admin\nfrom .models import *\n\nadmin.site.register(CustomUser)\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3740 次 |
| 最近记录: |