djangoでは条件付きの順序付けが必要ですが、その方法はわかりません。Djangoの条件付きの順序で多くのフィールドが多い
User
とPost
という2つのモデルがあります。 Post
モデルはseen_users = ManyToManyField(User)
フィールドを持っています。
私はすべての投稿を取得したいが、私の見た投稿は最初にあるべきである。
私はこのコードを試してみた:
Post.objects.all().annotate(
is_seen=Case(
When(seen_users__id__exact=me.id, then=1),
default=0,
output_field=IntegerField()
)
).order_by('-is_seen', '-created')
が、この1は重複投稿を返します。私はdistinct
を追加しようとしましたが、運はありませんでした。
したがって、1つのクエリでそれを行う方法はありませんか? – Bulgantamir
@Bulgantamirどのようにしてそれを行うことができるか、さらに説明が追加されました。それで、問題を解決するのですよね? – Jonathan