class Order(models.Model):
# Some fields..
status = models.IntegerField()
user = models.ForeignKey(User)
ステータスフィールドは、4つの値を取得することができますが存在しますDjangoの複数の()は、集約
if in the queryset there is a row with status=1, return 1
elif there's row with status=3, return 3
elif there's row with status=4, return 4
elif there's row with status=2, return 2
この優先度(つまり、この順番では、スイッチケースの動作と同様です)。 特定のユーザーのためにそれらに照会して、いくつかの状況メッセージを表示します。したがって、次のようになるはずです。
Order.objects.filter(user=request.user) # ...? .aggregate() maybe ?
そして、私はインジケータだけが必要で、注文オブジェクトは必要ありません。
dbレベルではCase
のようなものになると思いますが、私はdjangoで動作させることができませんでした。
EDIT:より良い説明すること、私はその
if Order.objects.filter(user=request.user, status=1).exists():
return 1
elif Order.objects.filter(user=request.user, status=3).exists():
return 3
elif Order.objects.filter(user=request.user, status=4).exists():
return 4
elif Order.objects.filter(user=request.user, status=2).exists():
return 2
ようにそれを行うことができます。しかし、明らかに、私は4つのクエリ..
を、私は、フィールドの数値に頼らない好みます。第2に、これは動作しません。たとえば、status = 3、status = 2の行が存在する場合は3が返されます。 – user3599803