在Django中自定义用户个人资料

问题描述

| 我想在用户个人资料中添加新字段。它在管理员端工作,但在前端却无法保存... 它非常好奇,因为没有错误显示,它确实可以保存。 在以下代码中,我向用户配置文件添加了字段“ CPF”。它在前端表单中正确显示,然后我尝试保存它(这里发生了一些问题) 感谢您的帮助。 models.py
from django.db import models
from django.contrib.auth.models import User

...
cpf = models.CharField(\'CPF\',max_length=14)
...

def __unicode__(self):
return self.cpf
表格
from django.contrib.auth.forms import UserCreationForm
from django import forms
from django.contrib.auth.models import User
from usuario.models import UserProfile


class cadastroForm(UserCreationForm):
...

cpf = forms.CharField(label=\'CPF\')

class Meta:
    model = User
    fields = (\"username\",\"cpf\")


def save(self,commit=True):
    ...
    user.cpf = self.cleaned_data[\"cpf\"]

    if commit:
        user.save()

    return user
views.py
def cadastro(request):
if request.method == \'POST\':
    form = cadastroForm(request.POST)
    if form.is_valid():
        new_user = form.save()
        return HttpResponseRedirect(\"/\")
else:
    form = cadastroForm()
return render_to_response(\"registration/registration.html\",{
    \'form\': form,})
admin.py(工作正常,不需要任何更改)
from django.contrib import admin
from usuario.models import UserProfile
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin as AuthUserAdmin

class UserProfileInline(admin.StackedInline):
model = UserProfile
max_num = 1
can_delete = False

class UserAdmin(AuthUserAdmin):
   inlines = [UserProfileInline]

admin.site.unregister(User)
admin.site.register(User,UserAdmin)
    

解决方法

        问题在于提交条件,解决方案是:
        if commit:            
           user.save()
           profile.user = user
           profile.save()
    ,        很难说,因为您没有发布所有代码。您能否发布所有代码,以便我们可以在某处看到它是否是错字,以便我们可以在您的模型表单中分辨出用户名。 您是否要在模型窗体的保存方法中调用超级保存?不记得是否需要。 不是真实的代码只是一个例子 m =超级(yourForm,self).save()     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...