외래 키당 하나의 개체 만 반환하는 쿼리 세트를 반환 할 수 있습니까?Django : 외래 키당 하나의 필터링 된 개체 반환
예를 들어 django_comments에서 최신 코멘트를 얻으 려하지만 객체 당 하나의 주석 (최신 코멘트) 만 필요합니다. 즉, 객체에 대한 최신 코멘트 만 반환하고 그 이전 코멘트를 모두 제외하십시오 목적. 나는 이것이 django_comments.content_type과 django_comments.object_pk의 SQL group_by와 비슷하다고 생각한다.
++ ADDED 정보 ++
는 최종 목표는 그 주제에 최근에 의해 나열되어 표준 토론 게시판처럼, 가장 최근의 코멘트를 갖고있는 스레드에 의해 주문 표시 활성 코멘트 "스레드"/ 목록을 만드는 것입니다 활동.
가장 좋은 방법은 최신 주석을 얻은 다음 콘텐츠 형식 및 object_pk별로 정렬하거나 그룹화하여 관련 콘텐츠 개체 당 하나의 주석 (최신)이 반환되도록하는 것입니다. 그런 다음 그 주석을 사용하여 필요한 모든 정보를 얻을 수 있습니다. 그래서 나는 정말로 주석을 붙잡고 그것을 따르는 단어이므로 느슨하게 사용됩니다.
MODEL은 django_threadedcomments로서 django_comments를 확장하여 나무, 자식 및 부모에 대해 몇 가지 추가 필드를 추가합니다.
보기 :
...이 부모
comments = ThreadedComment.objects.all().exclude(is_public='0').order_by("-submit_date")
의 모든 인스턴스를 포함하여 모든 코멘트를 반환 ...이 이상적입니다
comments = ThreadedComment.objects.all().exclude(is_public='0').order_by("submit_date").[plus sorting logic to exclude multiple instances of the same object_pk and content_type]
TEMPLATE :
{% for comment in comments %}
TITLE: {{comment.content_object.title}}
STARTED BY : {{comment.content_object.user}}
MOST RECENT REPLY : {{comment.user}} on {{comment.submit_date}}
{% endfor %}
다시 한번 감사드립니다!
는 기본적으로, 당신은 SQL'LIMIT를 원하는 1' ('[0]'장고 쿼리),하지만 당신은 스레드 당 있다는 싶어? 장고 쿼리가 어떻게 생겼는지 보여줄 수 있습니까? 그래서 우리는 어떻게 변경하는지 보여 줄 수 있습니까? –
제 질문을 고맙게 생각했습니다. – jnh
distinct를 사용하십시오. 이 대답을보십시오 http://stackoverflow.com/a/14293530/632182 – Christoffer