4

我必须为我的两个不同模型“目标和区域”实现自动完成搜索,所以我应该根据包含我的两个不同查询集的查询结果向我的模板发送 json 响应。

你认为在这种情况下我应该使用哪个视图?任何人都可以在这里提供最佳实践吗?

4

1 回答 1

13

您可以构建一个 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,以便可以在您的 Destinations 和 Regions 模型中重用它。

于 2013-05-21T06:51:34.673 回答