0

我有 Django 模型:

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

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

4

1 回答 1

1

首先,确保您创建了三个与您的组相对应的组对象。

接下来,您需要限制管理员中的选择。不过我不确定,我认为该组在用户表单中?这是一个解决方案,有点骇人听闻。从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)
于 2011-04-07T18:57:45.433 回答