спасибо огромное, помогло
возник еще один маленький вопросик: какой метод я должна переопределить, чтобы при создании пользователя фильтровались группы, в которые он может включить нового юзера?
И метод для какого класса это будет?
class MyUserAdmin(UserAdmin):
def save_model(self, request, obj, form, change):
obj.save()
if not UserCreatedByGroup.objects.filter(user=obj).exists():
for i in User.objects.get(pk=request.user.id).groups.all():
foo = UserCreatedByGroup(user=obj, group=i)
foo.save()
def queryset(self, request):
qs = super(MyUserAdmin, self).queryset(request)
# если это суперпользователь - показываем все
if request.user.is_superuser:
return qs
else:
#вернули пользователей, которые созданы группами пользователей, в которые входит менеджер
qs = User.objects.filter(id__in=UserCreatedByGroup.objects.filter(group__in=\
request.user.groups.all().values_list('id', flat=True)).values_list('user_id', flat=True).distinct())
return qs
class MyGroupAdmin(GroupAdmin):
def save_model(self, request, obj, form, change):
obj.save()
if not GroupCreatedByGroup.objects.filter(group=obj).exists():
for i in User.objects.get(pk=request.user.id).groups.all():
foo = GroupCreatedByGroup(group_created=obj, group=i)
foo.save()
def queryset(self, request):
qs = super(MyGroupAdmin, self).queryset(request)
if request.user.is_superuser:
return qs
else:
qs = Group.objects.filter(id__in=GroupCreatedByGroup.objects.filter(group__in=\
request.user.groups.all().values_list('id', flat=True)).values_list('group_created_id', flat=True).distinct())
return qs
Ы кажись я нашла
"ModelAdmin.formfield_for_foreignkey(self, db_field, request, **kwargs)
The formfield_for_foreignkey method on a ModelAdmin allows you to override the default formfield for a foreign key field. For example, to return a subset of objects for this foreign key field based on the user:"
Верно?
Спасибо))
Ы точнее manytomany:
def formfield_for_manytomany(self, db_field, request, kwargs):
if db_field.name == "groups":
kwargs["queryset"] = Group.objects.filter(id__in=GroupCreatedByGroup.objects.filter(group__in=\
request.user.groups.all().values_list('id', flat=True)).values_list('group_created_id', flat=True).distinct())
return super(MyUserAdmin, self).formfield_for_manytomany(db_field, request, kwargs)
спасибо, вы гений)
Ы ... я захотела поставить еще фильтр на группы на странице списка юзеров... и к сожалению оно показывает все группы, а не те которые должны быть доступны(((
Updated 26 Sept. 2011, 17:51 by Lud4ikLuk.