我有以下三个模型。 (为了清楚起见,我删除了不必要的字段)

class Product(models.Model):
    product_id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=255)

class MRFDetails(models.Model):
    mrf_no = models.AutoField(primary_key=True)
    customer_id = models.ForeignKey(CustomerDetails)
    product_id = models.ForeignKey(Product)
    machine_no = models.CharField(max_length=255)

class MRFStatus(models.Model):
    mrf_no = models.ForeignKey(MRFDetails)
    worker_id = models.CharField(max_length=255)


我想获取结果,因为预期将从以下SQL查询给出。只是为了从我从MRFStatus获得的值获取名称表单产品表。

SELECT
 `SandD_mrfstatus`.`mrf_no_id`,
 `SandD_mrfdetails`.`mrf_no`,
 `SandD_mrfdetails`.`product_id_id`,
`SandD_product`.`product_id`, `SandD_product`.`name`,
`SandD_product`.`end_product_name`
FROM `SandD_mrfstatus`
INNER JOIN `SandD_mrfdetails`
ON ( `SandD_mrfstatus`.`mrf_no_id` = `SandD_mrfdetails`.`mrf_no` )
INNER JOIN `SandD_product`
ON ( `SandD_mrfdetails`.`product_id_id` = `SandD_product`.`product_id` )
WHERE `SandD_mrfstatus`.`status` = 0
ORDER BY `SandD_mrfstatus`.`status` ASC,
 `SandD_mrfstatus`.`modified_datetime` DESC


这就是我尝试过的

gg = MRFStatus.objects.all().filter(Q(status__contains=0)).order_by('status','-modified_datetime').select_related()


如何获得MRFDetails和产品中存在的值。

print gg.values()


仅给出与MRFStatus表相关的值。

最佳答案

要从参考表中获取值,请使用双下划线__

MRFStatus.objects.filter(status=0).values(
    'mrf_no__mrf_no', 'mrf_no__product_id__name', ''
    ).order_by('status', '-modified_datetime')

08-24 21:33