2013-02-11 40 views
17

Tôi có một mô hình MyModel2 với một ManyToManyField liên quan đến một mô hình khác MyModel1.Làm thế nào để truy vấn trực tiếp bảng được tạo bởi Django cho một mối quan hệ ManyToMany?

Làm cách nào để có được các cặp mymodel1.id, mymodel2.id, như được trình bày trong bảng mà Django tạo cho mối quan hệ này? Tôi có phải làm một truy vấn SQL thô trên bảng này hay là nó có thể thông qua các trình quản lý đối tượng của mô hình này?

class MyModel1(models.Model): 
    name = models.CharField(max_length=50) 


class MyModel2(models.Model): 
    name = models.CharField(max_length=50) 
    mymodel1 = models.ManyToManyField(MyModel1) 

Trả lời

35

Đây là nhiều đối với nhiều field instance:

MyModel2.mymodel1 

Đây là mô hình bảng trung gian:

MyModel2.mymodel1.through 

Đây là người quản lý mô hình trung gian:

MyModel2.mymodel1.through.objects 

Điều này trả về một truy vấn đặt cho tất cả mô hình trung gian:

MyModel2.mymodel1.through.objects.all() 

This part của tài liệu django nói về through. Bạn có thể tự tạo một mô hình through, nếu không nó sẽ tự động được tạo.

+0

điều này xóa tất cả nghi ngờ của tôi ,,, :) – Spiderman

+0

đối tượng 'ManyToManyDescriptor' không có thuộc tính 'mặc dù' –

+0

Bạn có lỗi đánh máy;) thông qua! – jpic

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