내가있어 모델 :django 일대일 왼쪽 조인이 null입니까? 장고에있는 것과 같은
class User(models.Model):
name = models.CharField(max_length = 128)
class Message(models.Model):
sender = models.ForeignKey(User, related_name = 'messages_sent')
recipient = models.ForeignKey(User, related_name = 'messages_recieved')
subject = models.CharField(max_length = 128)
body = models.CharField(max_length = 3500)
class Response(models.Model):
message = models.OneToOneField(Message, primary_key = True)
reply = models.TextField()
나는 응답, 내가 같이 SQL에 쓰기 무언가가없는 사용자에 대한 모든 메시지를 얻으려고 :
select * from user u
join message m on (u.id = m.recipient_id)
left join response r on (m.id = r.message_id)
where r.message_id = null
을
u.messages_recieved.filter(response = None)
또는
:나는이 될 것이라고 할 수있는 자연적인 방법을 생각할 것
하지만 항상 생성 된 SQL이 될 수있을 테니까요 :
WHERE ("project_message"."recipient_id" = 1 AND "project_message"."id" IS NULL)
내가 멍청한 짓을하고 있는가, 또는이 장고의 버그? 유사한 결과를 달성하려고 할 때 내가했던
하아! 그래서 1.1RC에서 수정 될 수 있습니다. 위의 어느 것도 1.0.2에서는 저에게 맞지 않습니다. 내가 체크해 볼게. – tpk
그래서 1.1에서 수정되었습니다. 1.1의 최종 릴리스에서 테스트되었습니다. – tpk
ORM은이 새 버전에서 많은 개선 사항을 받았습니다. 흥미롭게도 필자는 1.0.3 Alpha & 1.1에서만 작업을 수행했으며 둘 다 동일한 쿼리를 생성했습니다. – tarequeh