2013-11-03 2 views
0

Я работаю над проектом, который будет иметь разные группы пользователей, а группы пользователей имеют разные разрешения на веб-сайте. Теперь я хочу иметь возможность создавать эти группы пользователей на странице создания группы admin django. Мне нужна страница создания группы, чтобы иметь еще несколько флажков или много-много форм, таких как разные регионы и функции, которые я могу назначить для групп.Как изменить форму создания группы на странице администратора

Я пытался что-то вроде этого, но он не работает:

class GroupPermission(GroupAdmin): 
    group = models.CharField(max_length=100) 
    if not hasattr(Group, 'locations'): 
     field = models.ForeignKey(Group,blank=True,null=True) 
     field.contribute_to_class(Group, 'locations') 
    annotations = models.TextField() 
    show_all_annotations = models.BooleanField(default=False) 
    location_group = models.CharField(max_length=100) 
    show_all_locations = models.BooleanField(default=False) 


class Meta: 
    permissions = (
     ("show_us_map", "Allow user to view the US Map."), 
     ("show_world_map", "Allow user to view the World Map."), 
     ("show_europe_map", "Allow user to view the Europe Map."), 
     ("allow_download_data", "Allow user to download data."), 
    ) 
    def __unicode__(self): 
    return self.group 

admin.site.unregister(Group) 
admin.site.register(Group, GroupPermission) 

Кто-нибудь есть какие-нибудь идеи? Или есть плагины, которые могут это сделать?

ответ

0

Вы добавляете поля модели в ваш ModelAdmin, который не будет иметь никакого эффекта. То, что вы должны сделать вместо этого:

  • добавить модели полей в Model где
  • создать ModelForm, который содержит все поля, необходимые и настроить его save метод, описанный here in the docs и in this example
  • использовать эту форма в ModelAdmin, как показано here in the docs
+0

Спасибо. Но как я могу добавить поля модели? Я унаследовал Группу как MyGroup (Group), затем отменил регистрацию Group и зарегистрировал MyGroup, есть ошибка, указанная/admin/auth/group/add not found – Robert

+0

У меня нет опыта расширения групповой модели, но я только что нашел [другой ответ ] (http://stackoverflow.com/a/7669063/1378264), это может быть полезно. –

1

Вы можете сделать это следующим образом:

from django.contrib.auth.admin import GroupAdmin 
from django.contrib.auth.models import Group 

Membership = Group.user_set.related.through 

class MembershipInline(admin.TabularInline): 
    model = Membership 
    extra = 1 

GroupAdmin.inlines = list(GroupAdmin.inlines) + [MembershipInline] 

более легким уборщик способом было бы создать свой собственный GroupAdmin и использовать admin.site.unregister и admin.site.register, а не обезьяна латание, как описано выше.

Также обратите внимание, что интерфейс довольно груб, по сравнению с красивым виджетами «многие-ко-многим», который предоставляет Django, но он работает.

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