繁体   English   中英

Django模型内部加入ORM问题

[英]Django model inner join ORM issues

假设我具有以下三个模型,如下所示:我想构造一个Django模型查询,以存储与以下SQL语句相同的效果。

SQL语句

select B.value, C.special
from B inner join C 
where B.version = C.version and B.order = C.order;

我得到以下三种模型:

class Process(models.Model):
    name = models.CharField(max_length=30)
    description = models.CharField(max_length=150)

class ProcessStep(models.Model):
    process = models.ForeignKey(Process)
    name = models.CharField(max_length=30)
    ...
    order = models.SmallIntegerField(default=1)
    version = models.SmallIntegerField(null=True)

class Approve(models.Model):
    process = models.ForeignKey(Process)
    content = models.CharField(max_length=300)
    ...
    version = models.SmallIntegerField(null=True)
    order = models.SmallIntegerField(default=0)

我想查找所有与ProcessStep模型具有相同(版本,顺序)元组匹配的批准。

像这样吗

Approve.objects.filter(process__processstep_set__order=<value>)

现在,我只能使用原始SQL提出解决方案,请参见以下代码。

from django.db import connection
cursor = connection.cursor()
cursor.execute("
SELECT A.id, B.id 
from approval_approve as A inner join approval_approvalstep as B
where A.process_id = B.process.id 
    and A.order = B.order 
    and A.version = B.version;")
# do something with the returned data

如果你们有更好的解决方案,我希望收到您的来信,谢谢〜

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM