5

晚上好,

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

  1. 我扩展了用户配置文件以添加自定义字段。
  2. 我将模型添加到用户管理模型中,所以当我添加用户时,我可以直接填写字段来创建配置文件。
  3. 现在,如果我没有在这些新的自定义用户字段中添加任何内容,则在用户添加页面中,Django 管理员不会向我抛出错误,说这些字段为空(并且它们不应该是)
  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)

在模型.py

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

    def __unicode__(self):
        return 'Number'
4

1 回答 1

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  
于 2012-04-18T17:44:18.910 回答