ManyToMany 中包含 ForeignKey 的 Django 过滤器
Django filter for ForeignKey included in ManyToMany
不知道是我看累了还是回答简单没看出来
我有这样一个模型:
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,并且还可以。
我需要的是将公司 'is included' 所在的 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 )
第一个 returns 个 pk
列表。第二个过滤器在该列表中具有 pk 的公司的 groupdata 对象
是否值得调查
filtered_groupdata = Groupdata.objects.filter( company_id__in=user_company_pks )
(a) 有效并且 (b) 明显更有效。外键的值(company_id
)通常是相关对象的pk。
不知道是我看累了还是回答简单没看出来
我有这样一个模型:
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,并且还可以。
我需要的是将公司 'is included' 所在的 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 )
第一个 returns 个 pk
列表。第二个过滤器在该列表中具有 pk 的公司的 groupdata 对象
是否值得调查
filtered_groupdata = Groupdata.objects.filter( company_id__in=user_company_pks )
(a) 有效并且 (b) 明显更有效。外键的值(company_id
)通常是相关对象的pk。