Django多对多:如何获得id

时间:2017-07-23 05:29:22

标签: django many-to-many

我的模型有许多领域:

class Brand(models.Model):
    Company_Group = models.ManyToManyField(Company)

class Company(models.Model):
    Pref_Company_Name_Flg = models.CharField(u'Preferred Name Flag',max_length=255, default="")
    Pref_Company_Name = models.CharField(u'Preferred Name',max_length=255, default="")

我想过滤包含“company_instance”

的品牌ID
brands = Brand.objects.all()
company_instance=company.objects.filter(id =company_id)
for brand in brands:
    for i in Brand.Company_Group.through.objects.filter(Company_Group = brand):
        print i.id

我发现类似的问题如下:click here

但报告错误:

Cannot resolve keyword 'Company_Group' into field. Choices are: brand, brand_id, company, company_id, id

然后我尝试这种方式,也报告错误:

type object 'Brand' has no attribute 'Company_id'

谢谢andvance

1 个答案:

答案 0 :(得分:2)

您可以使用Company实例的反向关系,例如

company = Company.objects.get(id=company_id)
company.brand_set.all() #this would return all Brand instances
                        #with company instance.