У меня есть две модели, как так:
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')
В третьей упомянутой выше модели (Partner) нет ничего примечательного.
Я хотел бы получить что-то вроде:
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;
Я наткнулся на эту страницу, рассказывает, как выполнять настраиваемые соединения, и я попытался передать кортеж имен столбцов для соединения вместо имени столбца для соединения, но это не сработало. Таблицу Partner не нужно включать в результирующий SQL-запрос, но я приму ответ, который включает ее, если он эффективно выполняет то, что я пытаюсь сделать с одним запросом.