>source

특정 사용자의 질문에서만 발견되는 태그를 기반으로 질문을 필터링하는 방법을 만들려고 합니다. 반환되는 QuerySet에 문제가 있습니다.Queryset([질문13, 질문14, 질문13]). 그래도 언제.별개의()추가되면 원하는 결과를 반환합니다.QuerySet([질문13, 질문14]).

두 번째 체인은 왜.필터()메서드가 QuerySet에 중복 인스턴스를 추가합니까?

class Post(Model):
    body= TextField()
    date= DateField(default=date.today)
    comment= ForeignKey('Comment', on_delete=CASCADE, null=True)
    profile= ForeignKey(
        'authors.Profile', on_delete=SET_NULL, null=True,
        related_name='%(class)ss',
        related_query_name="%(class)s"
    )
    score= GenericRelation(
        'Vote', related_query_name="%(class)s"
    )
    class Meta:
        abstract= True
class Question(Post):
    title= CharField(max_length=75)
    tags= ManyToManyField(
        'Tag', related_name="questions", related_query_name="question"
    )
    objects= Manager()
    postings= QuestionSearchManager()

class QuestionSearchManager(Manager):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
    def by_week(self, profile):
        today= date.today()
        weekago= today -timedelta(days=7)
        queryset= self.get_queryset().filter(
            date__range=(weekago, today)
        ).filter(tags__name__in=profile.questions.values_list(
            "tags__name", flat=True
        ))
        return queryset

게시물.json

{
    "model": "posts.question",
    "pk": 13,
    "fields": {
        "body": "Content of Question 005",
        "date": "2022-02-12",
        "comment": null,
        "profile": 2,
        "title": "Question__005",
        "tags": [
            1,
            7
        ]
    }
},
{
    "model": "posts.question",
    "pk": 14,
    "fields": {
        "body": "Content of Question 006",
        "date": "2022-02-12",
        "comment": null,
        "profile": 3,
        "title": "Question__006",
        "tags": [
            1,
            2
        ]
    }
}

  • 답변 # 1

    이것도 잠시 당황스러웠지만,태그필터가 여러 태그와 해당 태그의 속성을 참조하는 경우이름이제 행을 반환할 것입니다.꼬리표참조

    독특한이것을 사용하여 필터링할 때 가장 친한 친구입니다.태그__이름스타일 쿼리.

    다대다 관계이기 때문에 이는 해당 관계를 필터링할 때 일반적으로 알고 있어야 하는 사항입니다.

    이 질문은 다음과 유사합니다. 논리적 또는 Django의 다대다 쿼리가 중복 결과를 반환합니다.

    Django 문서의 이 섹션을 읽고 쿼리가 어떻게 작동하는지 더 잘 알 수 있습니다.

  • 이전 flutter : 오류: 예외가 발생했습니다. ProviderNotFoundException(오류: 이 CustList 위젯 위에서 올바른 Provider>를 찾을 수 없습니다.
  • 다음 Typescript에서 정적 생성자 함수가 있는 형식을 일반적으로 참조하는 방법