Django - 从平方多对多关系中获取对象

Django - Get objects from a squared many-to-many relation

我正在使用以下模型启动 Django 项目:

供应商 <- 多对多 -> 产品 <- 多对多 -> 类别

是否有一种有效的方法来获取链接到供应商产品的所有类别?

目前低效的方式:

  1. 获取特定供应商的所有产品
  2. 为所有产品获取其特定类别
  3. 删除类别列表的重复项

如果可能的话,我想避免在类别和供应商之间创建虚假的多对多关系。

提前致谢,

诀窍总是从你想要得到的模型开始,即Category。因此,假设您的关系称为 productvendor,并且您有一个名为 my_vendor:

的 Vendor 对象
Category.objects.filter(product__vendor=my_vendor)