Django

2016-05-29 14 views
7

Django's ManyToMany field öğesinde bir ManyToMany ilişkisinde bir nesneyi, my_field.add(my_instance) kullanarak doldurulabilir, ancak anladığım kadarıyla, yalnızca SQL sorgusunu gerçekleştirmek için yalnızca my_instance.id gerçekten gereklidir.Django

Kimliği ile bir nesne eklemek istiyorsam, my_field.add(MyModel.objects.get(id=id)) kullanabilirim, ancak bu bir tane yerine iki sorgu üretecektir. Bu ekstra sorguyu nasıl önleyebilirim? the documentation of the add method söz etmese de

cevap

11

, aslında bu gibi kendisine doğrudan bir kimliği geçirebilirsiniz:

my_instance.add(id)

Şüphesiz, birincil anahtar ilişkisi için tanımlayıcı olarak kullanılan bu sadece çalışır (varsayılan davranış).

+0

Doğrudan kimliği benim için bir TypeError (Django 1.10.5) sonuçlanır: "TypeError: 'MyRelatedModel' örneği bekleniyor, '5835da11-dcde-47da-9664-e5c13e235ccc' var" " –