Как ограничить поле имени группы пользователей тремя вариантами? - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть модель django:

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

Когда я создаю новый экземпляр UserProfile, я хочу иметь на выбор только 3 имени группы (в интерфейсе администратора и в моей пользовательской форме): «студент», «инструктор», «декан». Каков наилучший способ сделать это? Должен ли я расширить пользовательскую модель или группу?

1 Ответ

1 голос
/ 07 апреля 2011

Сначала убедитесь, что у вас создано три объекта группы, соответствующих вашим группам.

Далее необходимо ограничить выбор в админке. Я не уверен, хотя, я думаю, что группа находится в форме пользователя? Вот одно решение, которое немного хакерское. Переопределите UserChangeForm с http://code.djangoproject.com/browser/django/trunk/django/contrib/auth/admin.py и используйте его в качестве пользовательской формы в администраторе.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...