如何过滤多个到多个字段。 例如我&#;;
class Category(models.Model):
products = models.ManyToManyField(Product)
...
class Product(models.Model):
shippers = models.ManyToManyField(Shipper)
manufacturer = models.ForeignKey(Manufacturer)
...
使用 products = Product.objects.filter(category = category) 我将查询类别中的产品列表。 如何获取该类别中所有产品的所有可能托运人的清单?第二个问题是如何从这个查询中获取所有制造商实例。
现在提取制造商看起来像
manufacturer_ids = products.values_list('manufacturer').distinct()
manufacturers = Manufacturer.objects.filter(id__in=manufacturer_ids)
但我相信这应该是更好的方式 此外,我也不知道如何从此查询中获取所有可能的出货单列表。
答案 0 :(得分:1)
要获得给定类别中所有产品的所有托运人:
shippers = Shipper.objects.filter(product__category=category)
这可能会返回重复值,因此您可以在其上调用.distinct()
。
为了让制造商更整洁,您可以:
manufacturers = Manufacturer.objects.filter(products__in=products)
另一方面,将类别字段作为ForeignKey
字段放在Product
模型上而不是反过来似乎更明智。