2011-01-24 34 views
12

Tôi đã tự hỏi nếu có bất kỳ người trợ giúp tiện dụng trong Django mà sẽ trả lại kết quả của một truy vấn vào một định dạng 'có giá trị' hơn vì vậy tôi không phải lặp qua chúng theo quan điểm của tôi.Django - Kết quả truy vấn dưới dạng 'kết hợp' dict?

Tôi có một câu hỏi như thế này:

self.filter(key__in=keys).values('key','value') 

Những gì tôi muốn kết thúc là một đối tượng trông giống như

{'some_key':'some value', 'some_other_key':'some_other_value'} 

Vì vậy, trong mô hình của tôi tôi có thể làm một cái gì đó như thế này:

settings = Setting.objects.get_keys(['some_setting','some_other_setting']) 
print settings.some_setting # returns 'some value' 

Trường hợp 'get_keys' là một hàm quản lý chạy truy vấn bộ lọc ở trên. Bất kỳ ý tưởng làm thế nào tôi có thể làm điều này? Tôi sẽ không phản đối việc lặp lại thông qua các kết quả trong Trình quản lý cài đặt vì tôi có thể lưu trữ chúng sau này ... Tôi không thể hình dung được cách tạo một biến mô hình 'toàn cầu'.

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!

Trả lời

27

Nếu bạn sử dụng values_list hơn values, nó sẽ trả về một tập hợp của hai bộ dữ liệu, sau đó bạn có thể vượt qua để dict() để tạo ra một từ điển:

return dict(self.filter(key__in=keys).values_list('key','value')) 
3

Tôi nghĩ rằng những gì bạn đang muốn tìm : http://docs.djangoproject.com/en/1.2/ref/models/querysets/#in-bulk Chức năng này lấy danh sách các khóa chính và trả về từ điển của các mô hình được ánh xạ tới các phím. Có vẻ như đây chính là điều bạn muốn?

+0

Cập nhật liên kết: https://docs.djangoproject.com/en/1.11/ref/models/querysets/#in-bulk – tufelkinder

Các vấn đề liên quan