【发布时间】:2013-11-22 13:40:43
【问题描述】:
背景:
我想知道如何根据模型用户外键 && 其关联名称、组和权限来过滤模型查询集结果。这是我希望发生的一个简单示例:
- 假设有公司汽车可供每位员工使用(只读状态)
- 还可以说,任何员工也可以选择使用自己的汽车(只能由所有者修改)
下面列出的是上面描述的场景,我最初尝试解决方案:
from django.contrib.auth.models import User
from django.db.models import Q
user1 = User.objects.create_user("Billy", 'bbob@gmail.com', 'pw');
user2 = User.objects.create_user("Johnny Boy", 'jbo@gmail.com', 'pw2');
user1.groups.add('employee')
user2.groups.add('employee')
class Car(models.Model):
name = models.CharField(max_length=200)
color = models.CharField(max_length=50)
carOwner = models.OneToOneField('User')
qObj = Q(carOwner__user_username = user1.username)
for empGroup in user1.groups:
qObj |= Q(carOwner__groups__icontains = empGroup)
transOpts= Car.objects.filter(qObj) #All Transportation Options for given user
问题:
我已经提供了解决方案的初步尝试,但想知道处理这种情况的“正确”方法是什么。废话不多说,问题来了:
问:如何根据用户名、组和权限的组合过滤模型?
【问题讨论】:
标签: django django-models django-admin django-queryset django-orm