我正在尝试获取用户的所有订单,其中该用户是订单供应商代表或经理的一部分。
我会用一些代码更好地解释。这是我的相关部分models.py
class Vendor( models.Model ) :
managers = models.ManyToManyField( User, related_name = 'managers' , limit_choices_to = { 'userprofile__user_types' : 4 } )
representatives = models.ManyToManyField( User, related_name = 'representatives', limit_choices_to = { 'userprofile__user_types' : 5 }, null = True, blank = True )
class Order( models.Model ) :
creator = models.ForeignKey( User, related_name = 'creator' )
approver = models.ForeignKey( User, related_name = 'approver' )
vendor = models.ForeignKey( Vendor, null = True, blank = True )
class UserType( models.Model ) :
name = models.CharField( max_length = 135 )
# id | name
#----+------------------
# 1 | tenant
# 2 | property manager
# 3 | property owner
# 4 | vendor manager
# 5 | vendor
# 6 | viewer
# 7 | moderator
# 8 | administrator
class UserProfile( models.Model ) :
user = models.OneToOneField( User )
user_types = models.ManyToManyField( UserType, null = True, blank = True )
要获取用户创建的所有订单很容易:
Order.objects.filter( creator = user.pk )
我不知道如何得到这个的原因是因为我不知道如何filter
使用 OR 子句(经理或代表)或检查 M2M 关系中的存在(检查经理/代表列表的一部分) )。