Ich habe folgendes Modell:django Filter queryset basierend auf __str__ von Modell
class Subspecies(models.Model):
species = models.ForeignKey(Species)
subspecies = models.CharField(max_length=100)
def __str__(self):
return self.species.species_english+" "+self.species.species+" "+self.subspecies
def __unicode__(self):
return self.species.species_english+" "+self.species.species+" "+self.subspecies
bemerkt, dass das ForeignKey Feld species
in den __str__
__unicode__
und Methoden verwendet. Ich hatte diese Filterabfrage gemacht:
l = list(Subspecies.objects.filter(subspecies__contains=request.GET.get('term')).order_by('subspecies')[:10])
Das ist fast was ich will, außer nicht ganz. Was ich wirklich will, ist ein Filter, der überprüft, ob die __str__
Darstellung des Objekts eine Gruppe von Zeichen enthält, anstatt nur das subspecies
Feld zu überprüfen. Anstelle von subspecies__contains=...
wäre es so etwas wie __str____contains=...
, aber das funktioniert natürlich nicht.
Ist das möglich? WENN, wie würde ich diese Abfrage machen?
Danke!
Warum können Sie nicht einfach auf die drei Felder im zugehörigen Modell filtern? – e4c5
Ja, das ist, was ich getan habe, würde ich lieber in der Lage sein, die ganze Phrase zusammen zu suchen, aber mit OR separat filtern ist fast OK. –