質問

カスタムマネージャーに2つ以上の変数を渡す方法があるかどうか疑問に思っていました...異なるビューからの変数が5つありますが、モデルでは、1つに基づいてフィルタリングを処理するマネージャーを宣言しましたこれらの変数のうち...すべての変数がフィルタークエリで考慮されるようにします。これを行う方法はありますか?

class VehicleQuerySet(QuerySet):
    def vehicle_query(self, year):
      return  self.filter(common_vehicle__year__year__exact=year).exclude(status__status='Incoming')

class VehicleManager(models.Manager):
    def get_query_set(self):
      return VehicleQuerySet(self.model)

    def vehicle_query(self, year):
      return self.get_query_set().vehicle_query(year)

ビューで:

vehicle_query = Vehicle.smart_objects.vehicle_query(year)
役に立ちましたか?

解決

あなたが与えたコードは不必要に複雑だと思います。フィルタリングはマネージャで実行できるため、クエリセットサブクラスを定義する必要はありません。

class VehicleManager(models.Manager):
    def vehicle_query(self, year):
      return self.get_query_set().filter(common_vehicle__year__year__exact=year).exclude(status__status='Incoming')

しかし、私はあなたの質問を本当に理解していません。 1つの変数をマネージャーメソッドに渡す方法を既に知っていますが、追加の変数を渡すのがさらに難しいのはなぜですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top