Làm thế nào tôi có thể chuyển đổi một bộ truy vấn Django thành một danh sách các dicts? Tôi đã không tìm thấy một câu trả lời cho điều này vì vậy tôi tự hỏi nếu tôi thiếu một số loại chức năng trợ giúp chung mà tất cả mọi người sử dụng.Làm cách nào để chuyển đổi một Bộ truy vấn Django thành danh sách các dấu gạch ngang?
Trả lời
Sử dụng các phương pháp .values()
:
>>> Blog.objects.values()
[{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}],
>>> Blog.objects.values('id', 'name')
[{'id': 1, 'name': 'Beatles Blog'}]
Lưu ý: kết quả là một QuerySet
mà chủ yếu là hoạt động như một danh sách, nhưng không thực sự là một thể hiện của list
. Sử dụng list(Blog.objects.values(…))
nếu bạn thực sự cần một phiên bản của list
.
Bạn không xác định chính xác từ điển sẽ trông như thế nào, nhưng rất có thể bạn đang đề cập đến QuerySet.values()
. Từ official django documentation:
Trả về một
ValuesQuerySet
- một lớp conQuerySet
trả điển khi sử dụng như một iterable, chứ không phải là mô hình thẩm đối tượng.Mỗi bộ từ điển đó đại diện cho một đối tượng, với các phím tương ứng với tên thuộc tính của đối tượng mô hình.
Phương pháp .values()
sẽ trả về kết quả loại ValuesQuerySet
thường là điều bạn cần trong hầu hết các trường hợp.
Nhưng nếu muốn, bạn có thể biến ValuesQuerySet
thành danh sách Python gốc bằng cách sử dụng tính năng đọc danh sách Python như được minh họa trong ví dụ bên dưới.
result = Blog.objects.values() # return ValuesQuerySet object
list_result = [entry for entry in result] # converts ValuesQuerySet into Python list
return list_result
tôi tìm giúp trên nếu bạn đang viết bài kiểm tra đơn vị và cần phải khẳng định rằng giá trị lợi nhuận kỳ vọng của một hàm phù hợp với giá trị trả về thực tế, trong trường hợp cả hai expected_result
và actual_result
phải cùng loại (ví dụ như từ điển).
actual_result = some_function()
expected_result = {
# dictionary content here ...
}
assert expected_result == actual_result
Hoặc bạn có thể đơn giản hóa việc chuyển đổi thành danh sách với 'danh sách (kết quả)' này –
Bạn có thể sử dụng phương pháp values()
trên dict bạn nhận được từ các mô hình lĩnh vực Django bạn thực hiện các truy vấn trên và sau đó bạn có thể dễ dàng truy cập vào từng trường theo một giá trị chỉ mục.
Gọi nó như thế này -
myList = dictOfSomeData.values()
itemNumberThree = myList[2] #If there's a value in that index off course...
Nếu bạn cần loại dữ liệu bản địa đối với một số lý do (ví dụ JSON serialization) này là nhanh chóng 'n' cách bẩn của tôi để làm điều đó:
data = [{'id': blog.pk, 'name': blog.name} for blog in blogs]
Như bạn có thể thấy việc xây dựng dict bên trong danh sách không thực sự là DRY nên nếu ai đó biết cách tốt hơn ...
- 1. Làm cách nào để chuyển đổi chuỗi truy vấn URL thành danh sách các bộ dữ liệu bằng Python?
- 2. Tại sao PIP chuyển đổi dấu gạch dưới thành dấu gạch ngang
- 3. Làm cách nào để chuyển đổi hai hoặc nhiều dấu gạch ngang thành đĩa đơn và xóa tất cả dấu gạch ngang ở đầu và cuối chuỗi?
- 4. Cách di chuyển tập lệnh từ dấu gạch ngang sang dấu gạch ngang?
- 5. Làm thế nào để chuyển đổi điểm bullet thành danh sách nằm ngang?
- 6. Làm thế nào để chuyển đổi kết quả truy vấn LINQ thành Danh sách?
- 7. Làm cách nào để chuyển đổi danh sách thành ObservableCollection?
- 8. Tại sao DisplayFormat có thay đổi DataFormatString "/" (dấu gạch chéo) thành "-" (dấu gạch ngang)?
- 9. django chuyển đổi danh sách các đối tượng thành danh sách các khóa chính
- 10. Làm cách nào để chuyển đổi danh sách thành một bộ trong Haskell?
- 11. Làm cách nào để ngăn LaTeX khỏi các từ gạch nối có dấu gạch ngang?
- 12. Chuyển đổi dấu gạch ngang sang CamelCase trong PHP
- 13. Truy vấn Django vào danh sách
- 14. Làm cách nào để chuyển đổi từ dấu ngoặc kép thông minh và dấu gạch ngang trong chuỗi?
- 15. javascript - thay thế dấu gạch ngang (dấu gạch ngang) bằng dấu cách
- 16. Chuyển đổi mảng 2dump thành danh sách các danh sách
- 17. Python Mô-đun với một dấu gạch ngang, hoặc dấu gạch ngang (-) trong tên của nó
- 18. django - chuyển đổi một danh sách trở lại một queryset
- 19. Làm thế nào để chuyển đổi danh sách các đối tượng thành danh sách giao diện?
- 20. Làm cách nào để chuyển đổi Bộ sưu tập thành Danh sách?
- 21. Chuyển đổi đầu ra của itertools.permutations từ danh sách các bộ thành danh sách các chuỗi
- 22. Làm cách nào để chuyển đổi bộ sưu tập Cookie thành danh sách chung? Dễ dàng
- 23. Làm cách nào để chuyển danh sách các loại phức tạp trong chuỗi truy vấn?
- 24. Chuyển đổi Data.Sequence thành một danh sách?
- 25. Làm thế nào để chuyển đổi danh sách các mảng thành một mảng đa chiều
- 26. Làm cách nào để tạo một URL phân cách bằng dấu gạch ngang thân thiện với SEO từ một chuỗi?
- 27. Dấu gạch ngang vs Dash: Thay thế Dash với Dấu gạch ngang
- 28. Làm cách nào để chuyển đổi tên lớp Ruby thành biểu tượng dấu gạch dưới?
- 29. Làm thế nào để chuyển đổi một danh sách để queryset django
- 30. chuyển đổi danh sách chuỗi thành danh sách số nguyên
có bạn chỉ định trường nào bạn muốn 'values ()' trả về bằng cách chuyển chúng vào làm đối số. Ngoài ra hãy cẩn thận mặc dù có vẻ như giá trị trả về một danh sách các dicts của nó thực sự là một '' và không phải là một danh sách. –
dm03514
điều này không thực sự trả về một danh sách mặc dù – astreltsov
Cảm ơn! Đã cập nhật. –