У меня есть модель, и я хотел бы ограничить доступ к объектам на основе уровня аутентификации пользователя.Анонимные пользователи могут видеть только подмножество объектов, в то время как авторизованные пользователи имеют доступ ко всем объектам.Читая книгу о django, я обнаружил, что могу использовать в своих представлениях проверки вроде is_authenticated () и реализовывать свою логику на основе этого условия.Но я не хочу, чтобы эти проверки разбрызгивались по всему моему коду, вместо этого я хотел бы иметь возможность придать своим моделям некоторый интеллект: модели должны делать доступными только объекты, видимые для разрешений текущего пользователя.
Вот несколько моделей, с которыми я работаю:
class Collection(models.Model):
VISIBILITY_CHOICES = (
('P', 'Private'),
('SP', 'Semi-Private'),
('PUB', 'Public')
)
name = models.CharField(max_length=40)
visibility = models.CharField(max_length=3, choices=VISIBILITY_CHOICES)
category = models.CharField(max_length=50)
class Image(models.Model):
image = models.ImageField(upload_to= get_upload_to)
collection = models.ForeignKey(Collection)
Пример запроса, который я делаю: collection_ids = Image.objects.values_list ('collection',flat = True) .distinct () - в этом случае я бы хотел проверить только те идентификаторы коллекции, которые пользователь имеет право просматривать (т. е. общедоступный / частный / полуприватный).
возможно, или я должен поместить логику авторизации в мои представления?