2010-11-16 53 views
33

Hi Giả sử tôi có một lớp mô hình đơn giản như thế này:Django đối tượng mô hình với sự sáng tạo khóa ngoại

class TestModel(models.Model): 
    testkey = models.ForeignKey(TestModel2) 
    ... 

Khi tôi đang tạo ra một đối tượng TestModel tôi phải vượt qua nó một thể hiện của đối tượng TestModel2 tạo nó:

testkey =TestModel2.objects.get(id=...) 
TestModel.objects.create(testkey=testkey) 

Điều này dẫn đến 2 truy vấn cơ sở dữ liệu Tôi cho rằng tôi có danh sách ID khóa nước ngoài cần tạo đối tượng.

Có thể tạo đối tượng có khóa ngoài mà không cần truy xuất các đối tượng khóa ngoài không?

+0

có thể trùng lặp của [Django: Đặt chìa khóa nước ngoài sử dụng số nguyên] (http://stackoverflow.com/questions/2846029/django-set-foreign-key -using-integer) –

Trả lời

48

gì bạn đang sau là:

TestModel.objects.create(testkey_id=1) 
+1

Vâng, bạn nói đúng, nhưng vì lý do nào đó, nó không hoạt động với get_or_create: ( – dragoon

+0

@dragon: Tôi tin rằng TestModel2.objects.get (testkey_id = 1) cũng không hoạt động. –

+7

@Tomasz không, điều đó sẽ không hoạt động, nhưng 'TestModel2.objects.get (testkey__id = 1)', và 'TestModel2.objects.get_or_create (testkey__id = 1)' sẽ hoạt động (lưu ý dấu gạch dưới kép). sẽ tăng 'MultipleObjectsReturned'. – sneeu

Các vấn đề liên quan