myqueryset = Content.objects.filter(random 100)
Trả lời
Content.objects.all().order_by('?')[:100]
Xem order_by docs. Cũng lưu ý rằng cách tiếp cận này không quy mô tốt (trên thực tế, nó có quy mô thực sự, thực sự tồi tệ). Xem this SO answer để có cách tốt hơn để xử lý lựa chọn ngẫu nhiên khi bạn có một lượng lớn dữ liệu.
Nếu bạn định thực hiện việc này nhiều lần, bạn cần thiết kế điều này vào cơ sở dữ liệu của mình.
Nếu bạn làm điều đó một lần, bạn có thể trả tiền phạt nặng. Điều này giúp bạn chính xác 100 với các thuộc tính ngẫu nhiên thực sự tốt. Tuy nhiên, nó sử dụng rất nhiều bộ nhớ.
pool= list(Content.objects.all())
random.shuffle(pool)
object_list = pool[:100]
Đây là một thuật toán khác cũng chậm vì nó có thể tìm kiếm toàn bộ bảng. Nó không sử dụng quá nhiều bộ nhớ và nó có thể không chính xác 100.
total_count= Content.objects.count()
fraction = 100./total_count
object_list = [ c for c in Content.objects.all() if random.random() < fraction ]
Nếu bạn muốn làm điều này nhiều lần, bạn cần thêm thuộc tính vào nội dung để cho phép lọc hiệu quả "ngẫu nhiên "giá trị. Ví dụ, bạn có thể làm điều này.
class Content(models.Model):
... etc. ...
def subset(self):
return self.id % 32768
Điều này sẽ phân chia dữ liệu của bạn thành 32768 tập con riêng biệt. Mỗi tập hợp con là 1/32768'thông tin của bạn. Để nhận 100 mục ngẫu nhiên, bạn cần 100 * 32768/total_count tập hợp con dữ liệu của mình.
total_count = Content.objects.count()
no_of_subsets= 100*32768/total_count
object_list = Content.objects.filter(subset__lte=no_of_subsets)
Đây là nhanh và đó là tái sản xuất. Các tập con là "tùy ý" không về mặt kỹ thuật "ngẫu nhiên".
Điểm tốt cho hiệu suất –
Tôi thích cách tiếp cận cuối cùng của bạn mặc dù tôi không nghĩ rằng bạn có thể lọc trên các thuộc tính. Bạn sẽ phải thêm cột tập hợp con vào chính mô hình và đặt giá trị của nó khi lưu như sau: http://ifacethoughts.net/2009/07/14/calculated-fields-in-django/ – jesal
Thêm tập hợp con làm phương thức đối với mô hình Nội dung không đủ để lọc, như được đề xuất trong đoạn trích cuối cùng của bạn. –
tôi làm:
import random
object_list = list(Content.objects.filter(foo=bar).values()[:100])
random.shuffle(object_list)
Chạy chỉ truy vấn MySQL đơn đơn giản và tốt về hiệu suất.
Điều này không trả về các bản ghi ngẫu nhiên từ cơ sở dữ liệu. Nó chọn kỷ lục trăm đầu tiên và xáo trộn chúng. Hồ sơ 101 trở đi không có cơ hội được chọn. – Blair
Tôi muốn đề xuất cách sử dụng hàm trộn trên order_by ('?') Có các vấn đề nghiêm trọng về hiệu suất: http://stackoverflow.com/a/6405601/232649 Để xáo trộn tất cả các bản ghi: shuffle (danh sách (Content.objects) .all())) [: 100] – Pratyush
- 1. Cách nhận bản ghi ngẫu nhiên từ cơ sở dữ liệu MS Access
- 2. Làm thế nào để truy vấn 10 bản ghi ngẫu nhiên duy nhất trong cơ sở dữ liệu mysql?
- 3. Làm cách nào để chèn bản ghi từ cơ sở dữ liệu mongo này vào cơ sở dữ liệu khác?
- 4. CakePHP - chọn ngẫu nhiên từ cơ sở dữ liệu và Xem
- 5. chọn hai hàng ngẫu nhiên trong cơ sở dữ liệu MySQL
- 6. Làm cách nào để sao chép bản ghi dữ liệu giữa hai bản sao của cơ sở dữ liệu SQLServer
- 7. mysql chọn CHỈ bản ghi trùng lặp từ cơ sở dữ liệu
- 8. kỷ lục ngẫu nhiên từ cơ sở dữ liệu mysql với CodeIgniter
- 9. Làm thế nào để xóa rất nhiều bản ghi từ cơ sở dữ liệu SQL nhanh?
- 10. Thay đổi bảng cơ sở dữ liệu ở Django
- 11. B-cây, cơ sở dữ liệu, tuần tự so với chèn ngẫu nhiên và tốc độ. Ngẫu nhiên đang thắng
- 12. Chọn quả ngẫu nhiên từ MySQL
- 13. Làm cách nào để xóa khỏi cơ sở dữ liệu?
- 14. Django - Chọn một ảnh ngẫu nhiên từ mỗi Album
- 15. Cơ sở dữ liệu HSQL 100% trong bộ nhớ
- 16. Làm thế nào để biết tên hiện tại của cơ sở dữ liệu ở Django?
- 17. Cách chèn 1 triệu hàng ngẫu nhiên vào bảng cơ sở dữ liệu Oracle
- 18. Django, nhiều cơ sở dữ liệu với sql thô. Làm thế nào để chọn db?
- 19. Làm thế nào để sao chép cơ sở dữ liệu trong sử dụng cơ sở dữ liệu khác trong django?
- 20. Bản ghi Android tồn tại() trong cơ sở dữ liệu?
- 21. Bạn sẽ đề xuất cách nào để kiểm tra bản ghi cơ sở dữ liệu whois?
- 22. Tải mẫu django từ cơ sở dữ liệu
- 23. Làm cách nào để khôi phục một cơ sở dữ liệu từ mysqldump chứa nhiều cơ sở dữ liệu?
- 24. Làm cách nào để chọn một giá trị ngẫu nhiên từ một điều tra?
- 25. Công cụ cơ sở dữ liệu nào để chọn cho ứng dụng Django?
- 26. Làm cách nào để định cấu hình NLog để ghi vào cơ sở dữ liệu?
- 27. Django: Lấy dữ liệu từ cơ sở dữ liệu khác nhau
- 28. Cách tạo dữ liệu ngẫu nhiên trong máy chủ SQL
- 29. MySQL: Cách truy xuất hàng ngẫu nhiên hoặc nhiều hàng ngẫu nhiên?
- 30. Cách chọn bản ghi từ cơ sở dữ liệu và cập nhật nó trong truy vấn nguyên tử
Và tất cả() là dư thừa, nhưng tôi không bao giờ nhớ điều đó. – Tom
Điều này thật tuyệt vời! Thông qua gỡ lỗi, tôi đã nhận thấy nó thậm chí tạo ra một truy vấn tốt, chỉ lấy 20 yếu tố, sử dụng 1 truy vấn, sử dụng ORDER BY RAND() cho ngẫu nhiên. Chúa ơi, thật tuyệt vời. –