Tôi cũng đang tìm kiếm một giải pháp phù hợp. Nhưng không thể tìm thấy bất kỳ như vậy đã phải đi lên với của riêng tôi. views.py
class VocationsListView(ListView):
context_object_name = "vocations"
template_name = "vocations/vocations.html"
paginate_by = 10
def get_queryset(self):
get = self.request.GET.copy()
if(len(get)):
get.pop('page')
self.baseurl = urlencode(get)
model = Vocation
self.form = SearchForm(self.request.GET)
filters = model.get_queryset(self.request.GET)
if len(filters):
model = model.objects.filter(filters)
else:
model = model.objects.all()
return model
def get_context_data(self, **kwargs):
context = super(VocationsListView, self).get_context_data(**kwargs)
context['form'] = self.form
context['baseurl']= self.baseurl
return context
models.py
class Vocation(models.Model):
title = models.CharField(max_length = 255)
intro = models.TextField()
description = models.TextField(blank = True)
date_created = models.DateTimeField(auto_now_add = True)
date_modified = models.DateTimeField(auto_now = True)
created_by = models.ForeignKey(User, related_name = "vocation_created")
modified_by = models.ForeignKey(User, related_name = "vocation_modified")
class Meta:
db_table = "vocation"
@property
def slug(self):
return defaultfilters.slugify(self.title)
def __unicode__(self):
return self.title
@staticmethod
def get_queryset(params):
date_created = params.get('date_created')
keyword = params.get('keyword')
qset = Q(pk__gt = 0)
if keyword:
qset &= Q(title__icontains = keyword)
if date_created:
qset &= Q(date_created__gte = date_created)
return qset
nên về cơ bản tôi thêm đoạn mã này để mỗi lớp mô hình, nơi mà tôi muốn thực hiện các chức năng tìm kiếm. Điều này là do bộ lọc cho mỗi mô hình phải được chuẩn bị một cách rõ ràng
@staticmethod
def get_queryset(params):
date_created = params.get('date_created')
keyword = params.get('keyword')
qset = Q(pk__gt = 0)
if keyword:
qset &= Q(title__icontains = keyword)
if date_created
qset &= Q(date_created__gte = date_created)
return qset
nó chuẩn bị bộ lọc qset mà tôi sử dụng để lấy dữ liệu từ mô hình
Nguồn
2011-07-20 08:47:00
Hoàn hảo! Tôi đã phải trao đổi thứ tự thừa kế (ListView, FormMixin) để giữ cho phân trang hoạt động. – laffuste
Điều này là tốt đẹp nhưng những gì tôi nên sử dụng trong mẫu để xuất tất cả các hình thức. Tôi chỉ thấy một thể hiện của biểu mẫu là phần tử đầu tiên và object_list là danh sách mô hình. –
Bạn có thể liệt kê mã mẫu không? –