【问题标题】:Customizing User Profile in Django在 Django 中自定义用户配置文件
【发布时间】:2011-06-25 01:27:37
【问题描述】:

我想在用户个人资料中添加新字段。它在 admin 方面工作,但它没有在前端保存...... 它很好奇,因为没有显示错误,它只是保存。

在下面的代码中,我将字段“CPF”添加到了 userprofile。它在前端表单中正确显示,然后我尝试保存它(这里发生了一些问题)

感谢您的帮助。

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

forms.py

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)

【问题讨论】:

  • 显示完整模型,cpf 字段是在某些自定义 UserUserProfile 模型上吗?

标签: django django-authentication django-users


【解决方案1】:

问题在于提交条件,解决方案是:

        if commit:            
           user.save()
           profile.user = user
           profile.save()

【讨论】:

    【解决方案2】:

    很难说,因为您没有发布所有代码。您能否发布所有代码,以便我们可以查看它是否是某个地方的拼写错误,以便我们可以在您的模型表单中判断用户是什么。

    您是否在模型表单的保存方法中调用了超级保存?不记得是否需要。

    不是真实的代码只是一个例子

    m = super(yourForm, self).save()

    【讨论】:

      猜你喜欢
      • 2013-09-08
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多