[英]Django filter for ForeignKey included in ManyToMany
我不知道我是累了還是答案很簡單但我沒有看到
我有一個這樣的 model:
class Company(models.Model):
name = models.CharField(max_length=32, unique=True)
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
company_admin = models.ManyToManyField(Company)
# ...
class GroupData(models.Model):
name = models.CharField(max_length=32)
company = models.ForeignKey(
Company, on_delete=models.CASCADE)
如果在視圖中我這樣做:
print(request.user.userprofile.company_admin.all())
...我得到了用戶所屬的所有公司的 QS,並且還可以。
我需要的是獲取 GroupData 的過濾器,其中公司“包含”到此 QS 中,以便僅獲取基於用戶“company_admin”權限的 GroupData 對象。
誰能幫助我了解如何獲得此過濾器?
太謝謝了
如果我理解要求:
user_company_pks = users_profile.company_admin.all().values_list( 'pk', flat=True)
filtered_groupdata = Groupdata.objects.filter( company__pk__in=user_company_pks )
第一個返回pk
的列表。 第二個過濾器在該列表中具有 pk 公司的 groupdata 對象
可能值得調查是否
filtered_groupdata = Groupdata.objects.filter( company_id__in=user_company_pks )
(a) 有效並且 (b) 明顯更有效。 外鍵 ( company_id
) 的值通常是相關 object 的 pk。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.