过滤外国和多对多关系领域

时间:2016-03-24 15:18:04

标签: python django django-models foreign-keys many-to-many

我正在努力为我的项目获得正确的查询。这是我的模型的一个例子:

from django.db import models

class Brand(models.Model):
    name = models.CharField(max_length=30)
    handle = models.SlugField(max_length=30, unique=True, null=True, blank=True)
    def __unicode__(self):
        return self.name

class Product(models.Model):
    product_id = models.SlugField(unique=True)
    brand = models.ForeignKey(Brand, on_delete=models.SET_NULL, blank=True, null=True)
    collections = models.ManyToManyField('Collection')
    def __unicode__(self):
        return self.product_id

我正在尝试根据Brand_name

的值获取所有Product.collection

例如:鞋子是Product.collection,我想获得Brand_name的所有collection - 鞋子

我也尝试了__方法。不知怎的,它不起作用。

3 个答案:

答案 0 :(得分:0)

你应该尝试这样的事情:

Brand.objects.product_set.filter(collections__name="Shoes").values('brand__name')

答案 1 :(得分:0)

Brand.objects.filter(
    product__collection=product.collection
).values_list('name', flat=True).distinct()

productProduct的实例。

答案 2 :(得分:-1)

$(".navbar:not(.social) a, footer a[href='#myPage']").on('click', function(event){ event.preventDefault()}); 添加related_name,如下所示

foreign key

然后你可以尝试下面的查询,它会返回brand = models.ForeignKey(Brand, on_delete=models.SET_NULL, blank=True, null=True, related_name='products') listBrand.name的{​​{1}}。

product__collections_name='Shoes'