2

Возможно ли установить Django Admin, чтобы показать, какой пользователь в какой группе? И возможно ли иметь возможность добавлять пользователя в группу, используя страницу Django Admin? Если да, то как?Показать членов группы в Django Admin

Теперь я добавляю программных клиентов в customers group и продавцы sellers group, но я не вижу никакой информации в моей администрации.

Это моя регистрация view:

def register_customer(request): 
    if request.method == 'POST': 
     form = UserCreationForm(request.POST) 
     customer_registration_form = forms.CustomerRegistrationForm(request.POST) 

     if form.is_valid() and customer_registration_form.is_valid(): 
      new_user = form.save() 
      new_customer_profile = UserCustomerProfile(user=new_user) 

      new_customer_profile.save() 
      customers_group = Group.objects.get(name='Customers') 
      new_user.groups.add(customers_group) 

      return render(request, 'registration/complete.html') 
     else: 
      #handle errors 

    customer_registration_form = forms.CustomerRegistrationForm() 
    form = UserCreationForm() 
    return render(request, "registration/register.html", 
        {'form': form, 'customer_registration_form': customer_registration_form}) 

ответ

2

Я не уверен, если это то, что вы ищете, но вы можете внести изменения в ModelAdmin для группы, как это (в admin.py из вашего приложение):

from django.contrib.auth.admin import GroupAdmin 
from django.contrib.auth.models import Group 
admin.site.unregister(Group) 


class UserInLine(admin.TabularInline): 
    model = Group.user_set.through 
    extra = 0 


@admin.register(Group) 
class GenericGroup(GroupAdmin): 
    inlines = [UserInLine] 

Code based on this answer

Теперь вы можете редактировать инлайн, как вы хотите.

Я не думаю, что это именно то, что вы ищете, но это быстрое и грязное исправление, которое выполняет свою работу.

Отказ от ответственности: Я не знаю, является ли это одобренным способом Django, но я считаю, что он не слишком далеко.

+0

Для Django 1.8, мне нужно использовать 'модель = User.groups.through' как' through' не является атрибутом 'Group. user_set' – PaulR

3

Ответ CVi работал с некоторыми незначительными изменениями, но для моего использования я действительно хотел, чтобы другой виджет с несколькими избранными элементами управлял пользователями в группе, как и мульти-выбор для управления разрешениями группы.

Использование this answer для вдохновения, я пришел с этим:

from django import forms 
from django.contrib import admin 
from django.contrib.auth.admin import GroupAdmin as origGroupAdmin 
from django.contrib.auth.models import Group, User 


class GroupAdminForm(forms.ModelForm): 
    """ 
    ModelForm that adds an additional multiple select field for managing 
    the users in the group. 
    """ 
    users = forms.ModelMultipleChoiceField(
     User.objects.all(), 
     widget=admin.widgets.FilteredSelectMultiple('Users', False), 
     required=False, 
     ) 


    def __init__(self, *args, **kwargs): 
     super(GroupAdminForm, self).__init__(*args, **kwargs) 
     if self.instance.pk: 
      initial_users = self.instance.user_set.values_list('pk', flat=True) 
      self.initial['users'] = initial_users 


    def save(self, *args, **kwargs): 
     kwargs['commit'] = True 
     return super(GroupAdminForm, self).save(*args, **kwargs) 


    def save_m2m(self): 
     self.instance.user_set.clear() 
     self.instance.user_set.add(*self.cleaned_data['users']) 


class GroupAdmin(origGroupAdmin): 
    """ 
    Customized GroupAdmin class that uses the customized form to allow 
    management of users within a group. 
    """ 
    form = GroupAdminForm 


# Register the modified GroupAdmin with the admin site 
admin_site = admin.AdminSite(name='my_admin') 
admin_site.register(Group, GroupAdmin) 
+0

Спасибо, это именно то, что мне нужно. – Gautam

 Смежные вопросы

  • Нет связанных вопросов^_^