sql - Django LEFT OUTER JOIN 在两列上不是外键

标签 sql django join

我有两个这样的模型:

class ObjectLock(models.Model):
    partner = models.ForeignKey(Partner)
    object_id = models.CharField(max_length=100)

    class Meta:
        unique_together = (('partner', 'object_id'),)

class ObjectImportQueue(models.Model):
    partner = models.ForeignKey(Partner)
    object_id = models.CharField(max_length=100)
    ... # other fields
    created = models.DateTimeField(auto_now_add = True)
    modified = models.DateTimeField(auto_now = True, db_index=True)

    class Meta:
        ordering = ('modified', 'created')

上面提到的第三个模型(合作伙伴)没有什么值得注意的。

我想得到类似的东西:
SELECT * FROM ObjectImportQueue q LEFT OUTER JOIN ObjectLock l ON
q.partner_id=l.partner_id AND q.object_id=l.object_id WHERE l.object_id
IS NULL and l.partner_id IS NULL;

我遇到了this page这告诉了如何进行自定义联接,我尝试传入要联接的列名元组来代替要联接的列名,但这不起作用。 Partner 表不需要包含在生成的 sql 查询中,但我会接受一个包含它的答案,只要它有效地完成我试图用一个查询做的事情。

最佳答案

如果你使用 Django 1.2+ 并且知道你想要的 SQL,你总是可以回退到 Raw Query.

关于sql - Django LEFT OUTER JOIN 在两列上不是外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3808065/

相关文章:

django - Django中的用户创建表单

连接3个表时MySQL查询错误

PHP/MySQL : Replace multiple queries

mysql - 如何更改 mysql 中浮点值的精度?

python - 限制对仅拥有的内容 django 的访问

python - Django 引发类型错误 "profile() got an unexpected keyword argument ' 用户'”

mysql连接产品类别多关系查询

mysql - 错误 1005 无法创建添加外键的表

mysql - SQL:获取最大数量的 ID(已售商品)的 X、Y 属性

mysql - 使用 UNION 的子查询