0

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

我有一个模型

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:
.....

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

如果材料不属于当前用户,我必须将“Essai_TemperatureInline”只读权限

4

1 回答 1

0

我不确定你在问什么,但我想你在问如何知道这个材料是否属于这个用户。

那将是这样的:

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

这将返回属于 useru并具有lecturein 的所有材料droits_acces

也许您在问如何知道是否不属于,这可能是这样的:

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

在这里,我得到了所有不属于用户并拥有lecture的东西droits_acces

希望能帮助到你。

于 2014-04-01T09:03:46.883 回答