2012-08-31 4 views
2

블로그 사이트를 만들고 카테고리 및 게시물과 관련된 모델을 보유하고 있습니다. 게시물에는 범주에 대한 다 대다 관계가 있습니다.장고 양방향 관계

class Post(models.Model): 
    categories = models.ManyToManyField(Category) 

템플릿의 범주 목록에서 실제로 게시물이있는 범주 만로드한다는 점 외에도 모든 것이 잘 작동합니다.

카테고리가 비어 있다면 표시하고 싶지 않습니다. 게시물 카테고리로 관계를 정의하여 {{ if category.posts }}과 같은 것을 사용할 수 있도록했습니다. 현재 Category에서 Many to Many 필드를 사용하는 것은 관리자에게 내가 정말로 원하지 않거나 필요하다고 느끼는 추가 필드를 제공합니다.

이 관계를 탐색하거나 적합한 관계를 만드는 것이 가장 좋습니다.

건배 케빈 장고 자동 외래 키 또는 ManyToMany 관계 모델에 관련 필드를 생성

답변

0

ManyToMany 필드에 reverse relations을 사용할 수 있습니다. 역방향 필터에서는 관련 모델 이름을 사용해야합니다 (related_name 속성을 사용하지 않은 경우). 보기에 필터링 기능에서 당신은이를 사용할 수 있습니다

{% if category.post %} 

: 그래서 귀하의 질문에 당신은 같은 역 이름으로 모델 이름을 사용할 수 있습니다

Category.objects.filter(post__isnull=False) 

역의 관계 이름은 소문자 여야합니다.

설명서 확인 here

4

. 당신은 그와 같은 related_name 옵션을 통해 관련 모델에 필드의 이름을 제어 할 수 있습니다

class Post(models.Model): 
categories = models.ManyToManyField(Category,related_name='posts') 

이 방법, 당신의 접근 방식이 추가 필드없이 작동합니다. Btw, related_name 인수를 생략하면 Django는 기본적으로 [field_name] _set으로 생성합니다.