Djangos Generic-Views: Wann ListView vs. Detailansicht

Bin ich mit Django s, class based generic views in einer blog-Anwendung. Eine meiner Ansichten-zeigt eine Liste der Beiträge mit einem bestimmten tag. Ich kann schreiben, diese Ansicht als ListView Beiträge gefiltert nach tag. Oder ich kann schreiben, diese Ansicht als DetailView des Tags, und fügen Sie die entsprechenden Beiträge auf den Kontext.

Ist eine Möglichkeit, mehr richtig-oder Pythonic -- als die anderen?

Den ListView Ansatz scheint mehr semantische, denn was ich will ist ein Liste posts, aber es ist auch etwas komplexer. Es erfordert, dass ich überschreiben der beiden Methoden. Die DetailView Ansatz erfordert nur mich zu überschreiben einer Methode.

class PostTagView(ListView):
    """Display all blog posts with a given tag."""
    queryset = Post.objects.published()

    def get_context_data(self, **kwargs):
        context = super(PostTagView, self).get_context_data(**kwargs)
        context['tag'] = get_object_or_404(Tag, slug=self.kwargs['slug'])
        return context

    def get_queryset(self, **kwargs):
        queryset = super(PostTagView, self).get_queryset()
        return queryset.filter(tags__slug=self.kwargs['slug'])


class TagDetailView(DetailView):
    """Display all blog posts with a given tag."""
    model = Tag

    def get_context_data(self, **kwargs):
        context = super(TagDetailView, self).get_context_data(**kwargs)
        context['object_list'] = Post.objects.published().filter(tags__slug=self.kwargs['slug'])
        return context
InformationsquelleAutor user1272534 | 2012-03-19
Schreibe einen Kommentar