ManyToMany 관계의 부울로 쿼리 세트에 주석 달기

에릭 아세 베도

다음 Book과 같은 모델이 있다고 가정 해 보겠습니다 .

class Book(models.Model)
    title = models.Charfield(...)
    likes = models.ManyToMany(User, related_name="books_liked")

is_liked현재 로그인 한 사용자에 대한 필드가 있는 쿼리 세트에 주석을 추가해야합니다 .

보기에 이것을 가지고 있지만 작동하지 않습니다.

    user = self.request.user
    qs = Book.objects.all().annotate(is_liked=Exists(user.books_liked.all()))
    return qs

템플릿에서 이와 같은 것을 사용할 수 있습니다.

{% for book in books %}
    {% if book.is_liked %}
      ...
    {% endif %}
{% endfor %}

이 문서 섹션을 확인하고 있지만 진행 방법이나 올바른 방법인지 잘 모르겠습니다.

https://docs.djangoproject.com/en/3.1/ref/models/expressions/#exists-subqueries

어떻게 할 수 있습니까? 감사.

에릭 아세 베도

작동하도록하려면 명시 적 Like 모델을 만들어야합니다.

class Like(models.Model):
    book = models.ForeignKey(
        Book, on_delete=models.CASCADE,
   )
    user = models.ForeignKey(
        User, on_delete=models.CASCADE,
    )

ManyToMany관계를 제거하십시오 .Book

다음보기에서이 :

    qs = super().get_queryset()
    user_likes = Like.objects.filter(
        book=OuterRef("pk"),
        user=self.request.user
    )
    return Book.objects.annotate(
        is_liked=Exists(user_likes)
    )

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Django 쿼리 - 날짜 비교에서 부울 값으로 주석 달기

행의 날짜 필드를 기반으로 이전 일요일로 Django 쿼리 세트에 주석 달기

다른 "필터"쿼리 셋의 객체로 쿼리 셋에 주석 달기

장고 쿼리 셋. 하나의 쿼리로 다른 필드에 주석 달기

특정 manytomany 관계를 기반으로 Django 쿼리 세트 필터링

필드 값으로 쿼리 세트 주석 달기

한 필드가 다른 필드와 같거나 같지 않은 경우 부울로 쿼리 세트에 주석 달기

Django Arrayfiled : arryafield의 첫 번째 항목으로 쿼리 셋에 주석 달기

둘 이상의 필드가 있는 값 집계를 사용하여 쿼리 세트에 주석 달기

Django-쿼리 : 관련 모델 필드로 Queryset 주석 달기

Django-쿼리 : 관련 모델 필드로 Queryset 주석 달기

ggplot2에서 상관 계수 주석의 일부를 기울임 꼴로 표시하는 방법

Django 1.11 하위 쿼리 집계에 주석 달기

하위 쿼리 집합의 최대 값으로 쿼리 집합에 주석 달기

ManyToMany 관계 주석 달기 : 오류 : '필드 목록'의 알 수없는 열

Django - 쿼리할 최신 자식의 열 값에 주석 달기

Django-하위 쿼리의 여러 필드에 주석 달기

레이블에 해당하는 임계 값을 기반으로 쿼리 할 레이블에 주석 달기

Django : 여러 쿼리에 주석 달기

일치하는 관련 개체가 있는지 여부를 쿼리 집합에 주석 달기

주 번호를 기준으로 쿼리 응답에 주석 달기

Django 쿼리 셋에 쉼표로 구분 된 관련 항목 목록에 주석 달기

장고는 교차 카운트로 쿼리 셋에 주석 달기

장고 주석 쿼리는 역의 관계에서 불과 최신 카운트하기

Django에서 역 ManyToMany 관계 쿼리하기

Django ORM - SubQuery의 결과를 유지하면서 다른 SubQuery로 쿼리에 주석 달기

관리자로 사용자 정의 QuerySet을 사용하여 모든 쿼리 세트에 주석 추가

기사 세부 사항과 함께 기사의 MySQL 쿼리 주석 수

ManyToMany 관계 쿼리 만들기