我有 Django 模型:
class UserProfile(models.Model):
user = models.OneToOneField(User)
#other fields
当我创建新的 UserProfile 实例时,我只想选择 3 个组名(在管理界面和我的自定义表单中):“student”、“instructor”、“dean”。最好的方法是什么?我应该扩展用户模型还是组?
首先,确保您创建了三个与您的组相对应的组对象。
接下来,您需要限制管理员中的选择。不过我不确定,我认为该组在用户表单中?这是一个解决方案,有点骇人听闻。从http://code.djangoproject.com/browser/django/trunk/django/contrib/auth/admin.py覆盖 UserChangeForm并将其用作管理中的自定义表单。
class UserForm(UserChangeForm):
def __init__(self, *args, **kwargs):
super(UserChangeForm, self).__init__(*args, **kwargs)
names = ['student','instructor','dean']
self.fields['groups'] = forms.ModelChoiceField(queryset=Group.objects.filter(name__in=names))
class MyUserAdmin(UserAdmin):
form = UserForm
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)