Мне пришлось один раз решить подобную проблему.Я не нашел никакого причудливого решения, потому что мне не нужно что-то крепкое и чистое.Вот что я сделал:
Я создал промежуточную модель:
class ToyPermission(models.Model):
toy = ForeignKey(Toy)
level = models.CharField(max_length=100, choices=(
'f_of_f', 'Friends of friends',
...
))
allowed_users = ...
denied_users = ...
Затем я написал несколько декораторов для представлений, имеющих следующую подпись:
def some_view(request, toy):
#the code
Этидекораторы проверяют права доступа, а затем устанавливают некоторые переменные, либо непосредственно в extra_context
, либо в специальном kwarg
.
Это решение не является идеальным, но оно может помочь вам!
Однако теперь, когда я перечитал ваш вопрос, я не уверен, что точно отвечу на ваш вопрос:
Но, учитывая пользователя, как бы я отфильтровал все игрушки, которыепользователь мог видеть
Вы имеете в виду, как на Facebook: когда пользователь A посещает страницу пользователя B, вы хотите отображать только игрушки пользователя B, которые разрешены пользователю A?