如何将用户组名称字段限制为三个选项?

时间:2011-04-07 17:04:24

标签: django choice

我有django模型:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    #other fields

当我创建新的UserProfile实例时,我想只选择3个组名(在管理界面和我的自定义表单中):“student”,“instructor”,“dean”。最好的方法是什么?我应该扩展用户模型还是组?

1 个答案:

答案 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)