外部キーごとに 1 つのオブジェクトのみを返すクエリセットを返すことは可能ですか?
たとえば、django_comments から最新のコメントを取得したいのですが、オブジェクトごとに 1 つのコメント (最新のコメント) だけが必要です。つまり、オブジェクトの最新のコメントのみを返し、そのオブジェクトの過去のすべてのコメントを除外します。これは、django_comments.content_type と django_comments.object_pk の sql group_by に似ていると思います。
++追加情報++
最終的な目標は、最新のコメントを持つスレッドによって表示/順序付けされたアクティブなコメント「スレッド」のリストを作成することです。これは、トピックが最近のアクティビティによってリストされている標準的なディスカッション掲示板と同じです。
これを行う最善の方法は、最新のコメントを取得し、それらをコンテンツ タイプと object_pk で並べ替えまたはグループ化して、関連するコンテンツ オブジェクトごとに 1 つのコメント (最新) のみが返されるようにすることだと思います。次に、そのコメントを使用して必要なすべての情報を取得できます。つまり、コメントを取得して 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]
テンプレート:
{% 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 %}
再度、感謝します!