【发布时间】:2012-01-18 15:09:51
【问题描述】:
我有一个模型,我想根据用户的身份验证级别限制对对象的访问。匿名用户只能看到对象的子集,而授权用户可以访问所有对象。通读 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() -- 在这种情况下,我只想检查那些集合 id用户有权查看(即公共/私人/半私人)。
是否有可能或者我必须将授权逻辑放在我的视图中?
【问题讨论】:
标签: django django-models django-views