Python Django:如何在管理面板中将用户批量添加到组中?

Python Django:如何在管理面板中将用户批量添加到组中?,python,django,django-admin,Python,Django,Django Admin,我想根据过滤器和我在管理面板中的选择将许多用户添加到组中。 但“用户更改列表”视图不提供此类操作。 有没有办法做到这一点?有代码片段或应用程序吗 请不要使用shell,因为我希望开发人员以外的人也能这样做。 我很惊讶Django没有为这样一个普通的任务提供一种方法 谢谢 恐怕这个特殊的功能还没有在面板上公开。你得卷起袖子,打开外壳。您可以使用以下代码段,只需将过滤器放在定义.get和.exclude的位置 $ python manage.py shell >>> fr

我想根据过滤器和我在管理面板中的选择将许多用户添加到组中。 但“用户更改列表”视图不提供此类操作。 有没有办法做到这一点?有代码片段或应用程序吗

请不要使用shell,因为我希望开发人员以外的人也能这样做。 我很惊讶Django没有为这样一个普通的任务提供一种方法

谢谢


恐怕这个特殊的功能还没有在面板上公开。你得卷起袖子,打开外壳。您可以使用以下代码段,只需将过滤器放在定义.get和.exclude的位置

 $ python manage.py shell
    >>> from django.contrib.auth.models import User, Group
    >>> my_group = Group.objects.get(name='groupname')
    >>> my_users = User.objects.filter(<your_filter>)
    >>> for my_user in my_users:
    ...    my_group.user_set.add(my_user)
创建一个像这样的新表单,将用户批量添加到组中
正如我所说的,我希望非开发人员能够做到这一点。无论如何,谢谢你!这就是开源真正闪耀的地方。您可以在django源代码中加入此功能,让包括您在内的所有人都能从中受益。我正在寻找用于此常见任务的现有代码片段或应用程序。我不想重新发明轮子。您可以向UserAdmin添加一个操作,该操作运行上述代码段以进行选择。
from django.forms import ModelForm
from django import forms
from django.contrib.auth.models import Group, User

class GroupAdminForm(ModelForm):
    class Meta:
        model = Group
    
    group_users = forms.ModelMultipleChoiceField(label=u'Usuários deste Grupo', queryset=User.objects.all())

    def __init__(self, *args, **kwargs):
        super(GroupAdminForm, self).__init__(*args, **kwargs)
        users_id = list()
        # Avoid 'No exception supplied' 
        try: 
            users = self.instance.group.user_set.all()
            for u in users:
                users_id.append(u.id)
            if self.fields.has_key('group_users'):
                self.fields['group_users'].initial = users_id
        except Exception, e:
            pass

    def clean(self):
        group = self.cleaned_data['group']
        group.save()
        if group.user_set.all():
            group.user_set.clear()
        try:
            users = self.cleaned_data['group_users']
            for user in users:
                group.user_set.add(user)
        except:
            return self.cleaned_data
        return self.cleaned_data