Я пытаюсь ограничить результаты, перекрываяФильтр Queryset для django ManyToManyField?
def queryset(self, request):
в ItemAdmin.
Я хочу отображать только те элементы, для которых request.user предоставлен доступ к категории через профиль пользователя.
class Profile(models.Model):
user = models.ForeignKey(auth.User, unique=True)
categoryAccess = models.ManyToManyField(Category ...)
class Item(models.Model):
category = models.ForeignKey(Category ...)
Я совсем не могу получить правильный синтаксис .... Я пытаюсь что-то вроде
class ItemAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = super(ItemAdmin, self).queryset(request)
return qs.filter(category__in=request.user.objects__profile__categoryAccess)
Любые идеи? Большое спасибо!
Эй, Даниэль! Большое спасибо ... Я изменил поле на OneToOne, но я получаю «Запрос соответствия профиля не существует». – cssndrx
Ох! На самом деле это плохо. Код сломался, потому что у пользователя не было профиля при его создании. Можно ли просто поймать это исключение и вернуть пустой список? Спасибо за исправление :) – cssndrx
Просто чтобы подтвердить ... обратное отношение user.profile будет работать, правильно? Я видел, что в документации обратные отношения возможны с синтаксисом __. Однако, когда я создаю профиль, а затем пытаюсь фильтровать: я получаю нетрадиционную ошибку Django. В нем говорится: «Ошибка базы данных: что-то не так с вашей установкой базы данных. Убедитесь, что созданы соответствующие таблицы базы данных и убедитесь, что база данных читается соответствующим пользователем». Кто-нибудь видел это раньше? – cssndrx