如何在Django中选择两个表的结果
我的模型如下,
from django.db import models
from apps.admin.product.models import Product
class Cabinet(models.Model):
id = models.IntegerField(primary_key=True)
cabinet_name = models.CharField(max_length=45L, blank=True)
class Meta:
db_table = 'cabinet'
class ProductCabinetConstruction(models.Model):
id = models.IntegerField(primary_key=True)
product = models.ForeignKey(Product, null=True, blank=True)
cabinet_construction = models.ForeignKey(Cabinet, null=True, blank=True)
size = models.FloatField(null=True, blank=True)
class Meta:
db_table = 'product_cabinet_construction'
我想按如下方式执行mysql查询,
SELECT DISTINCT (cabinet.cabinet_name), product_cabinet_construction.product_id FROM product_cabinet_construction, cabinet WHERE product_cabinet_construction.product_id = 33
并尝试
models.ProductCabinetConstruction.objects.select_related().filter(product=productObj.id)
但失败了....任何想法我的错误
答案 0 :(得分:0)
我不知道为什么你的代码不起作用....代码中没有错误 该代码将返回一个包含ProductCabinetConstruction列表的查询集 你必须循环这个qieryset以获得每个元素
我认为你没有使用循环获取每个元素
pcc = ProductCabinetConstruction.objects.select_related().filter(product=33)
像这样循环获取每个元素
for productcc in pcc:
pro = productcc.product #is the product
cab = productcc.cabinet_construction # is the cabinet
答案 1 :(得分:0)
试试这些:
ProductCabinetConstruction.objects.select_related('product', 'cabinet_construction').filter(product__product_id=33).distinct('cabinet_construction__cabinet_name')
或
ProductCabinetConstruction.objects.values('cabinet__cabinet_name', 'product__product_id').filter(product__product_id=33).distinct('cabinet_construction__cabinet_name')