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。