Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để thực hiện Tham gia bên trong trong django?

Có thể bạn đang tìm kiếm select_related , đó là cách tự nhiên để đạt được điều này:

pubs = publication.objects.select_related('country', 'country_state', 'city')

Bạn có thể kiểm tra SQL kết quả qua str(pubs.query) , sẽ dẫn đến kết quả đầu ra dọc theo các dòng sau (ví dụ là từ chương trình phụ trợ postgres):

SELECT "publication"."id", "publication"."title", ..., "country"."country_name", ...  
FROM "publication" 
INNER JOIN "country" ON ( "publication"."country_id" = "country"."id" ) 
INNER JOIN "countrystate" ON ( "publication"."countrystate_id" = "countrystate"."id" ) 
INNER JOIN "city" ON ( "publication"."city_id" = "city"."id" ) 

Các giá trị con trỏ trả về sau đó được dịch sang các phiên bản mô hình ORM thích hợp, để khi bạn lặp lại các ấn phẩm này, bạn truy cập các giá trị của bảng liên quan thông qua các đối tượng của chính chúng. Tuy nhiên, những truy cập này cùng với các quan hệ chuyển tiếp đã chọn trước sẽ không gây ra thêm db lần truy cập:

{% for p in pubs %}
     {{ p.city.city_name}}  # p.city has been populated in the initial query
     # ...
{% endfor %}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để loại bỏ khoảng trắng theo sau trong MySQL

  2. Chỉ mục đa ngôn ngữ với Laravel Scout và Algolia

  3. Cảnh báo:mysqli_connect ():(HY000 / 1045):Quyền truy cập bị từ chối đối với người dùng 'tên người dùng' @ 'localhost' (sử dụng mật khẩu:CÓ)

  4. thứ tự mysql theo hiệu suất đếm

  5. đối số xấu # 1 thành 'ipairs' (bảng mong đợi, có boolean)