4

たとえば、からCat逆のモデルがあります。ForeignKeyLife

class Life(models.Model):
    state = models.CharField(choices=('alive', 'dead', 'unknown')
    cat = models.ForeignKey('animals.Cat', related_name="lives")


class Cat(models.Model):
     name = models.CharField(max_length=12)
     cat_type = models.CharField(choices=('normal', 'schroedinger')
     ...

命を失っていない のを取得するQuerySetにはどうすればよいですか? つまり、すべてのライフが「生きている」状態であるか、cat_type が「シュレディンガー」であり、「死んでいる」状態のライフがないCat)

4

2 に答える 2

1

しばらくこの API を使用していませんでしたが、これで作業が完了すると思います。

from django.db.models import Q

normal_and_alive = Q(cat_type="normal") & ~Q(lives__state__in=["dead", "unknown"])
schroedinger_and_not_dead = Q(cat_type="schroedinger") & ~Q(lives__state="dead")

cats = Cat.objects.filter(normal_and_alive | schroedinger_and_not_dead)

Q() オブジェクトを使用した複雑なルックアップについては、django のドキュメントのドキュメントを参照してください。

余談:これは1つのデータベースクエリのみを実行します

于 2013-09-16T14:32:49.523 に答える