我有两个这样的模型:
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/