django访问用户的权利

时间:2014-04-01 08:33:11

标签: django readonly access-rights

我在数据库中记录了材料,属于不同的用户。这些可以是私人访问,也可以是群组的一部分,也可以免费访问所有人。 我想,例如,当前用户可以访问所有材料的开放访问权限(但不能修改他没有创建的那些(只读字段)。但是,他可以添加其他记录..

我有一个模特

DROITS = (
('lecture', 'all'),
('groupe', 'group')
('private', 'private data')

class Material(models.Model):
    name = models.CharField(_('name'), max_length=50)
    category = models.ForeignKey(Category, verbose_name=_('category'))
    user = models.ForeignKey(User, default=None, blank= True, null = True)
    droits_acces = models.CharField(_('access right'), max_length=150, choices =      DROITS, default= 'private' )
    groupe = models.ForeignKey(Group,  verbose_name=_('group'), blank = True, null= True, default = None)

管理员:

class MaterialAdmin(admin.ModelAdmin):
   list_display = ('name', 'description', 'user', 'created', 'droits_acces')
   inlines = (MediaInline, UniteProperty2Inline, Essai_TemperatureInline)
   def queryset(self, request):
   qs = super(MaterialAdmin, self).queryset(request)
   if request.user.is_superuser:
      return qs
   else:
.....

首先是关联用户和材料。 我们该怎么办? 使用类Material,我只过滤相关材料的字段

如果材料不属于当前用户,我必须将'Essai_TemperatureInline'读取访问权限

1 个答案:

答案 0 :(得分:0)

我不确定您要求的是什么,但我想您正在询问如何知道此材料是否属于此用户。

这将是这样的:

belongToMe = Materials.objects.filter(user=u).filter(droits_acces="lecture")

这会返回属于用户u并且lecture中有droits_acces的所有素材。

也许你问如何知道如果不属于,可能是这样的:

notBelongToMe = Materials.objects.exclude(user=u).filter(droits_acces="lecture")

在这里,我得到的所有内容都不属于用户,lecture中有droits_acces

希望它有所帮助。