2017-12-12 10 views
1

所有者の車に座席がある家のリストを取得したいとしましょう。クエンセットを再利用するDjangoルックアップ複数のモデル

queryset.filter(owner__cars__seats__color='red') 

しかし、私は赤の席を持っている車を得るためのフィルタを再利用したいと思いますので、私は車のカスタムクエリセットがあります。

は、私はこのようにそれを行うことができます。

class CarsQuerySet(models.QuerySet): 
    def with_red_seats(self): 
     return self.filter(seats__color='red') 

最初のクエリで「with_red_seats」フィルタを再利用する方法はありますか? obiously動作しません。このような

何か、:

queryset.filter(owner__cars__with_red_seats) 

答えて

1

あなたは再利用したいしている場合:

red_seated_cars = Cars.objects.with_red_seats() 
House.objects.filter(owner__cars__in = red_seated_cars) 

は、私はより多くを好んただろうトリック

+0

を行う可能性がありますエレガントなソリューションですが、これは機能します。 – Alex

関連する問題