我在数据库中记录了材料,属于不同的用户。这些可以是私人访问,也可以是群组的一部分,也可以免费访问所有人。 我想,例如,当前用户可以访问所有材料的开放访问权限(但不能修改他没有创建的那些(只读字段)。但是,他可以添加其他记录..
我有一个模特
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'读取访问权限
答案 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
希望它有所帮助。