Ich versuche, eine Tabelle in Django basierend auf dem Wert eines bestimmten Feldes von a zu filtern ForeignKey
.
Zum Beispiel habe ich zwei Modelle:
class Asset(models.Model):
name = models.TextField(max_length=150)
project = models.ForeignKey('Project')
class Project(models.Model):
name = models.TextField(max_length=150)
Ich möchte meine Asset-Liste anhand des Namens des zugehörigen Projekts filtern.
Derzeit führe ich zwei Abfragen durch:
project_list = Project.objects.filter(name__contains="Foo")
asset_list = Asset.objects.filter(desc__contains=filter,
project__in=project_list).order_by('desc')
Ich frage mich, ob es eine Möglichkeit gibt, diese Art der Filterung in der Hauptabfrage anzugeben.
django
django-models
django-queryset
Fraser Graham
quelle
quelle
contains
beschreibt die Art des Vergleichs, der in der Abfrage verwendet wird, die der Django-ORM erzeugt. Die SQL wird wahrscheinlich so aussehenLIKE '%Foo%'
.Dies war möglich, seit der
queryset-refactor
Zweig vor 1.0 gelandet ist. Ticket 4088 enthüllte das Problem. Das sollte funktionieren:In der Django Many-to-One-Dokumentation finden Sie dieses und andere Beispiele für das Folgen von Fremdschlüsseln mithilfe der Modell-API.
quelle
In meiner obigen Bewerbung gehe ich davon aus, dass nach der Einschreibung eines Schülers eine SubjectGrade-Instanz erstellt wird, die das eingeschriebene Fach und den Schüler selbst enthält.
Das Benutzermodell für Betreff und Schüler ist ein Fremdschlüssel für das SubjectGrade-Modell.
In "available_subjects" habe ich alle Fächer ausgeschlossen, die bereits vom aktuellen student_user eingeschrieben sind, indem ich alle Subjectgrade-Instanzen mit dem Attribut "student" als aktuellem student_user überprüft habe
PS. Entschuldigung im Voraus, wenn Sie aufgrund meiner Erklärung noch nicht verstehen können. Dies ist die beste Erklärung, die ich liefern kann. Ich danke dir sehr
quelle