2016-05-29 5 views
7

Django's ManyToMany field kann mit my_field.add(my_instance) bestückt werden, aber wie ich es verstehe, ist nur my_instance.id tatsächlich erforderlich, um die entsprechende SQL-Abfrage durchzuführen.Hinzufügen eines Objekts durch ID in einer ManyToMany-Beziehung in Django

Wenn ich ein Objekt mit seiner ID hinzufügen möchte, kann ich my_field.add(MyModel.objects.get(id=id)) verwenden, aber dies erzeugt zwei Abfragen statt einer. Wie kann ich diese zusätzliche Abfrage vermeiden?

Antwort

11

Obwohl the documentation of the add method es nicht erwähnen, können Sie tatsächlich direkt eine ID, um es passieren, wie folgt aus:

my_instance.add(id)

Sicher, dies funktioniert nur, wenn der Primärschlüssel als Kennung für die Beziehung verwendet wird (die Standardverhalten).

+0

Die Übergabe der ID direkt führt zu einem TypeError für mich (Django 1.10.5): "TypeError: 'MyRelatedModel' Instanz erwartet, habe '5835da11-dcde-47da-9664-e5c13e235ccc'" –

Verwandte Themen