晚上好,
我正在使用Django创建一个网站,并扩展了用户资料。然而,我遇到了一个小问题,下面是我的情况:
- 我扩展了用户资料以添加自定义字段。
- 我将模型添加到了用户管理模型中,因此当我添加用户时,可以直接填写字段来创建资料。
- 现在,如果我在用户添加页面上这些新的自定义用户字段中什么也不填写,Django管理界面不会提示我这些字段为空(它们应该不为空)。
- 我希望在用户添加管理页面上抛出一个错误,以便管理员在添加新用户时必须填写资料。
- 所有用户都将在管理面板中添加。
是否可能实现这一点?非常感谢!
在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'
empty_permitted
是一个未记录在案的参数,可以被BaseForm
接受:当提交的表单从其初始数据没有被更改,且它的empty_permitted
为True
时,表单的full_clean()
不会执行任何进一步的验证。你可以在django/forms/forms.py
和django/forms/formsets.py
中检查empty_permitted
。如果您想要让其中一个字段不为空,则可以尝试为表单设置empty_permitted=True
,同时为其他字段设置blank=True
。 - okmMeta
是由ModelForm
使用的内部类,就像Model
中的那些一样。您可以参考文档。 - okm