我必须为我的两个不同模型“目标和区域”实现自动完成搜索,所以我应该根据由我的两个不同查询集组成的查询结果向我的模板发送 json 响应。
你认为在这种情况下我应该使用哪个 View ?任何人都可以在这里提供最佳实践吗?
最佳答案
您可以构建一个 mixin 以用于 ListView
。您可以搭载各种 ListView 功能,例如分页/模型/qs 创建。
不过和仅仅构建一个普通的 generic.base.View
并没有太大区别!
from django.core import serializers
class AJAXListMixin(object):
def dispatch(self, request, *args, **kwargs):
if not request.is_ajax():
raise http.Http404("This is an ajax view, friend.")
return super(AJAXListMixin, self).dispatch(request, *args, **kwargs)
def get_queryset(self):
return (
super(AJAXListMixin, self)
.get_queryset()
.filter(ajaxy_param=self.request.GET.get('some_ajaxy_param'))
)
def get(self, request, *args, **kwargs):
return http.HttpResponse(serializers.serialize('json', self.get_queryset()))
class AjaxDestinationListView(AJAXListMixin, generic.ListView):
# ...
您可能会看到如何以独立于模型的方式构建此 mixin,以便它可以在您的目标和区域模型中重复使用。
关于django - 如何使用基于 django 类的 View 发送包含不同模型查询集的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16663521/