Django - 在Admin中对用户进行分组

时间:2014-02-08 23:47:56

标签: django django-models django-admin

我想创建像ProgrammersDesignersManagers这样的用户群。我不是在谈论基于权限的群组。即,

我正在从django admin创建一个新的News对象。 target_group模型中有一个News字段。

我想将一些用户添加到此新闻对象中。如果我从创建表单中选择Programmers,则应添加我添加到Programmers组的所有用户。这必须像Many2ManyField。但是,我想选择包含一些用户列表的组,而不是选择用户。

我认为django admin中的默认Groups标签不提供这样的内容。

任何提示或帮助都会很棒。

谢谢。

1 个答案:

答案 0 :(得分:1)

# models.py
class News(models.Model):
    group = models.ForeignKey(Group)
    users = models.ManyToManyField(User)

# forms.py
class NewsAdminForm(forms.ModelForm):
    class Meta:
        model = News

    def __init__(self, *args, **kwargs):
        super(News, self).__init__(*args, **kwargs)
        if self.instance.group is not None:
            # here self.instance.group is need you group (programmers, managers etc.)
            users_queryset = User.objects.filter(groups=self.instance.group) 
            self.filelds['users'].choices = [(u.id, u.username) for u in users_queryset)

# admin.py
class NewsAdmin(admin.ModelAdmin):
    form = NewsAdminForm