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

abi*_*son 5 python django django-models django-forms

晚上好,

我目前正在使用Django创建一个站点,并使用用户配置文件扩展了用户.我有一个小问题.这是我的情况:

  1. 我扩展了用户配置文件以添加自定义字段.
  2. 我将模型添加到用户管理模型,因此当我添加用户时,我可以直接填写字段以创建配置文件.
  3. 现在,如果我没有在这些新的自定义用户字段中添加ANYTHING,则在用户添加页面中,Django Admin不会抛出错误,说明这些字段为空(并且它们不是假设的)
  4. 我希望它在此用户添加管理页面中向我抛出错误,以便管理员在添加新用户时必须填写配置文件.
  5. 所有用户都将添加到管理面板中.

这可能吗?非常感谢!

在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)
Run Code Online (Sandbox Code Playgroud)

在model.py中

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    employee_number = models.PositiveIntegerField(unique=True)

    def __unicode__(self):
        return 'Number'
Run Code Online (Sandbox Code Playgroud)

okm*_*okm 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  
Run Code Online (Sandbox Code Playgroud)