Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django额外注册详细信息未保存_Python_Django - Fatal编程技术网

Python Django额外注册详细信息未保存

Python Django额外注册详细信息未保存,python,django,Python,Django,我有form.py和class RegistrationForm,一切正常,但电子邮件、名字和姓氏、角色等额外细节不会保存到我的帐户/用户配置文件中,但名字和姓氏+电子邮件会保存在身份验证和授权/用户下 我一直在试图弄清楚,我是否把模型、表单或视图弄错了 有什么问题吗?将Python3与最新的django一起使用 第二 第三 Models.py class UserProfile(models.Model): STUDENT = 1 TOURIST = 2 BUSINESS = 3 ADMIN

我有form.py和class RegistrationForm,一切正常,但电子邮件、名字和姓氏、角色等额外细节不会保存到我的帐户/用户配置文件中,但名字和姓氏+电子邮件会保存在身份验证和授权/用户下

我一直在试图弄清楚,我是否把模型、表单或视图弄错了

有什么问题吗?将Python3与最新的django一起使用

第二

第三

Models.py

class UserProfile(models.Model):
STUDENT = 1
TOURIST = 2
BUSINESS = 3
ADMIN = 4
ROLE_CHOICES = (
    (STUDENT, 'Student'),
    (TOURIST, 'Tourist'),
    (BUSINESS, 'Business'),
    (ADMIN, 'Admin'),
)
user = models.OneToOneField(User, on_delete=models.CASCADE)
# first_name = models.CharField(max_length=100, default='')
# last_name = models.CharField(max_length=100, default='')
email = models.EmailField()
phone = models.IntegerField(default=0)
image = models.ImageField(upload_to='image_profile', blank=True)
role = models.PositiveSmallIntegerField(choices=ROLE_CHOICES, null=True, blank=True)

# admin = UserProfileManager()

def __str__(self):
    return self.user.username


def create_profile(sender, **kwargs):
    if kwargs['created']:
        user_profile = UserProfile.objects.create(user=kwargs['instance'])

post_save.connect(create_profile, sender=User)
forms.py

ROLES = ((0, 'Student'), (1, 'Tourist'), (2, 'Business'))


class RegistrationForm(UserCreationForm):
    email = forms.EmailField(required=True)
    role = forms.ChoiceField(choices=ROLES)
class Meta:
    model = User
    fields = (
        'username',
        'first_name',
        'last_name',
        'email',
        'role',
        'password1',
        'password2'
    )

def save(self, commit=True):
    user = super(RegistrationForm, self).save(commit=False)
    user.first_name = self.cleaned_data['first_name']
    user.last_name = self.cleaned_data['last_name']
    user.role = self.cleaned_data['role']
    user.email = self.cleaned_data['email']

    if commit:
        user.save()

    return user
views.py

def register(request):
if request.method == 'POST':
    form = RegistrationForm(request.POST)
    if form.is_valid():
        form.save()
        messages.success(request, 'Your account has been created!')
        return redirect(reverse('city:home'))
else:
    form = RegistrationForm()

    args = {'form': form}
    return render(request, 'account/register_form.html', args)
管理员

class UserProfileAdmin(admin.ModelAdmin):
list_display = ('user', 'role', 'email')

def user_info(self, obj):
    return obj.role

def get_queryset(self, request):
    queryset = super(UserProfileAdmin, self).get_queryset(request)
    queryset = queryset.order_by('email')
    return queryset

    role.short_description = 'User Type'

admin.site.registerUserProfile,UserProfileAdmin通过给定的屏幕截图,我认为您正在使用allauth库。如果要使用allauth并修改用户模型,则必须导入allauth的AbstractUser类

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
      phone = models.CharField(_('Telephone'), blank=True, max_length=20)
      address = models.CharField(_('Address'), blank=True, max_length=255)

向我们展示代码,这将有助于了解您实际尝试了什么。如果您也有模型表单和视图admin.py,请。我已经更新了代码