ユーザーが注文のベンダーの代表者またはマネージャーの一部であるユーザーのすべての注文を取得しようとしています。
いくつかのコードでよりよく説明します。これが私の関連部分です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関係に存在するかどうかを確認する方法(マネージャー/代表者リストの一部かどうかを確認する)がわからなかったためです。)。