[컴][웹] Django ORM Join 시 filter 사용시 주의할 점

django query join / 장고 query 조인



Django ORM Join 시 주의할 점


Django ORM 을 사용하고 있는 join 과 관련해서 한참을 헤매었다. 다름이 아니라 아래글에 있는 대로 했는데, FieldError 가 자꾸났다.
결론은 filter 안에 넣는 이름을 잘못 넣어서였다. 여러 곳에서 class name 의 소문자로 표시를 했길레 당연히 BlogName 의 소문자인 blogname 를 filter 의 인자로 넣었는데, 그것이 아니라 blog_name 으로 했어야 했다.

# app1/models.py
from django.db import models

class BlogName(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()




# app2/models.py
from app1.models import BlogName

class Entry(models.Model):
    blog_name = models.ForeignKey(BlogName, null=True)
    content = models.TextField()


틀린 문법

self.filter(blogname__id=24)[0]

올바른 문법

self.filter(blog_name__id=24)[0]
self.select_related('blog_name').filter(blog_name__id=24)[0].blog_name.id


See Also

django ORM 에서 query 에 대한 좀 더 자세한 이야기는 아래 예제를 살펴보도록 하자.





댓글 없음:

댓글 쓰기