扩展Django中的用户配置文件。管理员创建用户

时间:2012-04-18 15:43:23

标签: python django django-models django-forms

晚上好,

我目前正在使用Django创建一个网站,并使用用户个人资料扩展了用户。我有一个小问题。这是我的情况:

  1. 我扩展了用户个人资料,以便添加自定义字段。
  2. 我将模型添加到用户管理模型,因此当我添加用户时,我可以直接填写字段来创建个人资料。
  3. 现在,如果我没有在这些新的自定义用户字段中添加ANYTHING,则在用户添加页面中,Django Admin不会抛出错误,说明这些字段为空(并且它们不是假设的)< / LI>
  4. 我希望它在此用户添加管理页面中向我显示错误,以便管理员在添加新用户时必须填写个人资料。
  5. 所有用户都将添加到管理面板中。
  6. 这可能吗?非常感谢!

    admin.py

    中的

    from django.contrib import admin
    from django.contrib.auth.admin import UserAdmin as DjangoUserAdmin
    from django.contrib.auth.models import User
    from accounts.models import UserProfile
    
    
    class UserProfileInline(admin.TabularInline):
        model = UserProfile
    
    
    class UserAdmin(DjangoUserAdmin):
        inlines = [ UserProfileInline,]
    
    
    admin.site.unregister(User)
    admin.site.register(User, UserAdmin)
    

    在model.py

    class UserProfile(models.Model):
        user = models.OneToOneField(User)
        employee_number = models.PositiveIntegerField(unique=True)
    
        def __unicode__(self):
            return 'Number'
    

1 个答案:

答案 0 :(得分:5)

默认情况下,允许空内联,因此不会对空表单进行进一步检查。您需要手动覆盖它:

class UserProfileForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(UserProfileForm, self).__init__(*args, **kwargs)
        if self.instance.pk is None:
            self.empty_permitted = False # Here

    class Meta:
        model = UserProfile


class UserProfileInline(admin.TabularInline):         
    model = UserProfile                               
    form = UserProfileForm