4

2 つの異なるモデル「Destination and Regions」のオートコンプリート検索を実装する必要があるため、2 つの異なるクエリセットで構成されるクエリ結果に従って、json 応答をテンプレートに送信する必要があります。

この場合、どのビューを使用すればよいと思いますか? ここでベストプラクティスを提供できる人はいますか?

4

1 に答える 1

13

で使用する mixin を構築できますListView。ページネーション / モデル / qs 作成などのさまざまな ListView 機能を利用できます。

ただ平地を造るのとさほど変わりません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 に答える