0

如何在 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)

但失败了……知道我怎么了

4

2 回答 2

0

我不知道为什么您的代码不起作用....该代码没有错误,该代码将返回一个包含 ProductCabinetConstruction 列表的查询集,您必须循环此查询集以获取每个元素

我认为您没有使用循环来获取每个元素

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
于 2013-06-06T10:09:52.407 回答
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')
于 2013-06-09T05:17:41.683 回答