Django erstellt automatisch ein ID-Feld als Primärschlüssel.
Jetzt muss ich das Objekt anhand dieser ID abrufen.
object = Class.objects.filter()
Wie schreibe ich diesen Filter?
django
django-models
django-orm
user469652
quelle
quelle
pk
ist die bevorzugte Methode, um für jedes Modell auf den Primärschlüssel zu verweisen. Dasid
Feld wird nur generiert, wenn der Modellautor keinen Primärschlüssel speziell angibt. Wenn der Autor hat ein Primärschlüsselfeld angeben, der nicht namentlich genannt wirdid
, dann wird es nicht seinid
Feld.id
in einer integrierten Funktion, die die Identität eines Objekts zurückgibt. In den meisten Fällen wird das Referenzieren von Dingenid
das Richtige tun, zClass.objects.get(id=this_object_id)
. B. Arbeit. Aber das ist wohl etwas zu beachten.Ich bin aus demselben Grund hierher gekommen, aber aus einem anderen Grund:
Dieser Code löste eine ImportError-Ausnahme aus. Was mich verwirrte, war, dass der folgende Code einwandfrei ausgeführt wurde und wie erwartet eine Ergebnismenge zurückgab:
Ende des Tracebacks für die
get()
Methode:Als
loading.py
ich den Code in Djangos las , kam ich zu dem Schluss, dass ichsettings.py
einen schlechten Weg zu meiner App hatte, die meineClass
Modelldefinition enthält . Alles was ich tun musste, war den Pfad zur App zu korrigieren und dieget()
Methode einwandfrei auszuführen.Hier ist mein
settings.py
mit dem korrigierten Pfad:)
Die ganze Verwirrung wurde verursacht, weil ich Djangos ORM als Standalone verwende, also musste der Namespace dies widerspiegeln.
quelle
Sie können auch tun:
Dies funktioniert, aber ich bin mir möglicherweise nicht sicher, ob es in Django 2 unterstützt wird.
quelle
Sie können verwenden:
Dies gibt einen Abfragesatz zurück, selbst wenn er ein Objekt erhält. Wenn Sie genau ein Objekt benötigen, verwenden Sie:
quelle
Sie können auch die Django-Verknüpfung get_object_or_404 verwenden. Es wird ein 404-Fehler ausgelöst, wenn das Objekt nicht gefunden wird.
quelle