我有django模型:
class UserProfile(models.Model):
user = models.OneToOneField(User)
#other fields
当我创建新的UserProfile实例时,我想只选择3个组名(在管理界面和我的自定义表单中):“student”,“instructor”,“dean”。最好的方法是什么?我应该扩展用户模型还是组?
答案 0 :(得分:1)
首先,确保创建了三个与您的组对应的Group对象。
接下来,您需要限制管理员中的选项。我不确定,我认为该组是在用户表格中吗?这是一个解决方案,有点hackish。从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)