Tôi có một mô hình như thế này:Làm thế nào để có được mới nhất của nhiều nhóm cùng một lúc
class Foo(models.Model):
date = models.DateTimeField()
language = models.TextField()
# other stuff
Và tôi muốn nhóm Foo
s theo ngôn ngữ, sau đó nhận được một trong những mới nhất trong mỗi nhóm. Tôi đã không thể tìm ra cách sử dụng API QuerySet
của django để làm điều này (một cách trung thực, tôi cũng không biết cách thực hiện nó trong SQL). Vì vậy, ví dụ:
pk | date | language
---+--------+------------------
1 | 1:00 | python
2 | 1:30 | python/django
3 | 1:45 | haskell
4 | 2:15 | python
5 | 2:45 | haskell
Tôi muốn để có được một cái gì đó giống như kết quả này:
{ 'python': 4, 'python/django': 2, 'haskell': 5 }
đâu có lẽ thay vì con số những người đã hoàn thành Foo
đối tượng.
Bạn có bảng riêng cho ngôn ngữ không? Trong trường hợp này, có thể bạn sẽ có thể lấy các dữ liệu đó bằng cách sử dụng anotate() hoặc một cái gì đó tương tự. – Agonych
@ Agonych, tôi không thấy nó quan trọng như thế nào nếu tôi có một bảng ngôn ngữ. Bạn có gợi ý rằng tôi theo dõi 'Foo' mới nhất như một trường trong bảng ngôn ngữ? – luqui
Không, nhưng bạn có thể kéo ngày mới nhất cho mỗi bản ghi hoặc với chú thích (latest_date = Max ('foos__date') (cung cấp foos là many_to_many với Foo) hoặc bằng cách sử dụng hàm như get_max_date() trong mô hình Ngôn ngữ – Agonych