Tôi đang sử dụng chế độ xem chung dựa trên lớp của Django 1.3 để hiển thị danh sách hình ảnh, nhưng tôi muốn thêm bộ lọc cho phép người dùng thu hẹp kết quả được hiển thị.Làm thế nào để tạo biểu mẫu bộ lọc cho danh sách đối tượng chung (lớp dựa trên) trong Django?
công trình tiếp cận hiện tại của tôi, nhưng cảm thấy khá hackish:
class ImageFilterForm(ModelForm):
class Meta:
model = Image
class ImageListView(ListView):
model = Image
def get_queryset(self):
qs = Image.objects.select_related()
for item in self.request.GET:
key, value = item, self.request.GET.getlist(item)
# ... Filtering here ...
return qs
def get_context_data(self, **kwargs):
context = super(ImageListView, self).get_context_data(**kwargs)
context['filter_form'] = ImageFilterForm(self.request.GET)
return context
Có phương tiện tốt hơn để thêm tùy chỉnh lọc để một cái nhìn chung chung?
Tôi chỉ tìm thấy [django-filter] (https://github.com/alex/django-filter) ứng dụng và kết hợp nó với mixin của bạn. Tôi nghĩ rằng đó là đủ sạch cho tôi ;-) Cảm ơn! – cvk
Tôi cũng sử dụng bộ lọc django và kết hợp với phương thức get_queryset() ở trên và nó hoạt động độc đáo. fyi, filter.qs là thuộc tính trả về queryset đã lọc từ đối tượng filteret (một phần của ứng dụng bộ lọc django) – rsp
Để sử dụng tính năng này cho forms.DateField, tôi có thể làm như thế nào? – Marcaum54