Question

Je me demandais s'il était possible de transmettre deux ou plusieurs variables dans un gestionnaire personnalisé. Cinq variables proviennent de vues différentes, mais dans le modèle, j'ai déclaré qu'un gestionnaire gérait le filtrage en fonction d'une seule. de ces variables ... Je veux que toutes les variables soient prises en compte dans la requête de filtrage. Y a-t-il un moyen de le faire?

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)

Puis dans la vue:

vehicle_query = Vehicle.smart_objects.vehicle_query(year)
Était-ce utile?

La solution

Je pense que le code que vous avez donné est inutilement compliqué. Vous n'avez pas besoin de définir une sous-classe de groupe de requêtes, car le filtrage peut et doit être effectué dans le gestionnaire:

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')

Cependant, je ne comprends pas vraiment votre question. Vous savez déjà comment passer une variable dans une méthode de gestion. Pourquoi est-il plus difficile de passer des variables supplémentaires?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top