Một điểm khởi đầu tốt đẹp để làm Django truy vấn là các tài liệu Django chính họ.
http://docs.djangoproject.com/en/dev/topics/db/queries/
Dưới đây là một vài ví dụ:
select * from table
=
ModelName.objects.all()
lọc:
select * from table where column = 'foo'
=
ModelName.objects.filter(column='foo')
Cụ thể về việc sử dụng riêng biệt mà bạn sử dụng phương pháp riêng biệt() của một queryset Django.
Đây là liên kết có liên quan trong tài liệu. http://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct
Cập nhật: ORM giúp bạn bằng cách sử dụng tương tác hướng đối tượng với dữ liệu của bạn. Bạn không viết mã dịch kết quả truy vấn của bạn thành một tập hợp các đối tượng. Nó tự động. Đó là sự thay đổi cơ bản trong quá trình suy nghĩ mà bạn phải thực hiện.
Bạn bắt đầu nghĩ về 'Tôi có đối tượng này, tôi cần phải có được tất cả các đối tượng khác giống như' Sau đó, bạn có thể yêu cầu ORM cho các đối tượng đó. ORM, tôi cần tất cả các đối tượng của lớp sản phẩm đó có một thuộc tính của màu sắc "xanh" ngôn ngữ ORM cụ
Django cho rằng là:
products = Product.objects.filter(color='blue')
này được thực hiện thay vì:
- viết truy vấn sql của bạn,
- thoát hoàn toàn tất cả đối số,
- kết nối với cơ sở dữ liệu,
- truy vấn cơ sở dữ liệu và xử lý các lỗi kết nối/truy vấn,
- nhận kết quả,
- lặp qua bộ kết quả dịch các giá trị trả về thành các đối tượng thích hợp mà bạn có thể gọi phương thức.
Đó là giá trị khi sử dụng ORM. Mã đơn giản hóa và giảm thời gian phát triển.
Điều này đã làm cho tôi. Điểm mấu chốt là ORM trích xuất một tập hợp các đối tượng ("đối tượng" ~ = "toàn bộ hàng"), nhưng một hàng kết quả của SELECT DISTINCT không thể kết nối với một đối tượng đơn lẻ. Vì vậy, nếu bạn cần các đối tượng, hãy sử dụng ORM; nếu bạn cần một kết quả trong đó một hàng không thể được ánh xạ một cách đáng tin cậy vào một đối tượng duy nhất, hãy sử dụng SQL trực tiếp. Cảm ơn. – sienkiew