Ho questi modelli:Django, il filtraggio query da metodo dei modelli
def Foo(Models.model):
size = models.IntegerField()
# other fields
def is_active(self):
if check_condition:
return True
else:
return False
def Bar(Models.model):
foo = models.ForeignKey("Foo")
# other fields
ora voglio interrogare Bar che stanno avendo attiva di Foo come tale:
Bar.objects.filter(foo.is_active())
sto ottenendo errore come
SyntaxError at/
('non-keyword arg after keyword arg'
Come posso ottenere questo risultato?
Oppure memorizzare il valore che si desidera filtrare in un campo del database e aggiornarlo quando è necessario (in genere al salvataggio). Quindi puoi filtrare/ordinare come qualsiasi altro campo. –
Se riutilizzo i criteri all'interno della query del metodo, come posso rimanere DRY? I miei metodi sono estremamente importanti per la nostra logica di business e, se detta logica cambia, non posso permettermi di rompere i miei metodi. Rimanere ASCIUTTO è estremamente importante. – Flowpoke
In Python si introduce una potenziale debolezza delle prestazioni dal momento che quando si utilizza il filtro di query viene eseguito a livello di database, ma quando si eseguono le prestazioni a livello di Python di solito è più lento. –