2009-09-24 7 views
2

내가 장고 모델이 -. 내가 NoticedUser.objects.all와 즉, 객체 (를) 가져 오기 할 때= 진정한

class NoticedUser(models.Model): 
    user = models.ForeignKey(User, null=False) 
    text = models.CharField(max_length=255, null=True) 
    photo = models.ForeignKey(Photo, null=True, blank=True) 
    article = models.ForeignKey(Article, null=True, blank=True) 
    date = models.DateTimeField(default=datetime.now) 

을 select_related() 결과 쿼리 '사진'및 '기사'표가있는 조인이 포함되어 있지 않습니다. Django 소스를 살펴 봤는데 null = True를 포함하는 필드는 내부 조인 대신 왼쪽 조인을 수행해야하지만 적절한 조인이 결과 쿼리에 나타나지 않는 이유를 찾지 못했습니다. 이로 인해 관련 개체를 표시하는 동안 추가 쿼리가 발생하고 프로젝트에서 사용 된 '사진'및 '기사'테이블에 대한 사용자 지정 조인을 수행 할 가능성이 없습니다.

실제로 조인은 null = False 인 필드에 대해서만 나타나지만 필드 정의는 변경할 수 없습니다.

결과 쿼리에 null = True 인 필드에 조인을 추가하려면 어떻게합니까? 내가 사용하는 Django 버전은 1.0.2입니다.

감사합니다.

답변

4

매개 변수없이 select_related()을 사용할 때 기본적으로 이러한 관계를 따르지 않습니다. 명시 적으로 이름을 지정해야합니다.

NoticedUser.objects.all().select_related('article', 'photo') 
관련 문제