J'ai un modèle avec un ManyToManyField avec un modèle traversant dans lequel il y a un champ booléen sur lequel j'aimerais filtrer.Django custom manager avec ManyToManyField
from simulations.models import *
class DispatcherManager(models.Manager):
use_for_related_fields = True
def completed(self):
original = super(DispatcherManager,self).get_query_set()
return original.filter(dispatchedsimulation__status=True)
def queued(self):
original = super(DispatcherManager,self).get_query_set()
return original.filter(dispatchedsimulation__status=False)
class Dispatcher(models.Model):
name = models.CharField(max_length=64)
simulations = models.ManyToManyField('simulations.Simulation',
through='DispatchedSimulation')
objects = DispatcherManager()
class DispatchedSimulation(models.Model):
dispatcher = models.ForeignKey('Dispatcher')
simulation = models.ForeignKey('simulations.Simulation')
status = models.BooleanField()
Je pensais que la variable use_for_related_fields
me permettrait de filtrer les résultats m2m que sur un répartiteur d comme ceci: d.simulations.completed()
ou d.simulations.queued()
mais ceux-ci ne semblent pas travailler comme je l'avais prévu. Suis-je mal comprendre comment le use_for_related_fields
fonctionne, ou est-ce que je fais quelque chose de mal?