항목의 _set에 필터링하고 싶었지만 아래에서이 작업을 수행하는 동안 아래의 문제에서 해당 필드에 없었습니다. 게시판의 등급 테이블 등급 열을 가져 오려면 rating__rating을 사용해야했습니다. 장고의django 중첩 외래 키 집합 쿼리
, 나는이 있습니다
class Story(models.Model):
user = models.ForeignKey(User)
...
class Post(models.Model):
post = models.TextField(max_length=345)
story = models.ForeignKey(Story)
...
class Rating(models.Model)
rating = models.IntegerField()
post = models.ForeignKey(Post)
을하고 내가 설정 값이있는 해당 게시물에 대한 모든 평가 찾을 수 있습니다
def getPostsForStory(id):
return arrangeCountOfRatings(Post.objects.filter(story=id))
def arrangeCountOfRatings(postList):
for post in postList:
post.rateA = post.rating_set.filter(rating=rateA).count()
return postList
을하지만 난이 어떻게 하는가를 주어진 이야기에서? 즉, 각 게시물에 대해 카운트를 얻는 위의 프로세스를 적용하려고했지만 Story 객체를 사용한다고 가정 해 보겠습니다.
def getStoryItemsForUser(request):
return arrangeCountOfItems(Story.objects.filter(user=request.user.id)
def arrangeCountOfItems(storyList):
for story in storyList:
story.rateA = story.post_set.filter(rating=rateA).count()
return storyList
내가 (카운트 모든 잘못 원하는 걸하지 않습니다 - 1
EDIT 등급 게시물이있는 경우, 하나의 제로 :.
아 문제는 이렇게이다 :
story.rateA = story.post_set.filter(rating=rateA).count()
내가 원하는 것을 검색하지 않습니다 - 그것은 rating__id에 효율적으로 검색하는 대신
을 rating__rating한다그래서 나는 단지 rating__rating이라고 읽도록 변경했습니다.
'for'루프 중 일부를 QuerySet으로 옮기고 싶을 수도 있습니다. 데이터베이스가 느리게 작동합니다. [aggregation] (https://docs.djangoproject.com/en/dev/topics/db/aggregation/)을 확인하십시오. –
story.post_set.filter는 등급 개수가 아닌 게시물 개수를 계산합니다. 내 대답을 보라. – Tisho
@Mike에 동의합니다. –