私はPythonには新しく、Django 1.3のクラスベースの汎用ビューを理解しようとしています。Django Generic Views:新しいプロパティを割り当てるには?
class category_detail(ListView):
"""Return a generic view of locations in a category."""
def get_context_data(self, **kwargs):
# Call the base implementation first to get a context.
context = super(category_detail, self).get_context_data(**kwargs)
# Add the current category to the context.
category = get_object_or_404(Category, slug=self.kwargs['slug'])
context['category'] = category
return context
def get_queryset(self):
category = get_object_or_404(Category, slug=self.kwargs['slug'])
return Location.objects.filter(category=category)
それは、私はそれが何をするかをしたいん:今、私は、カテゴリ内のLocationオブジェクトのリストを取得し、次のビューを持っています。しかし、あなたはcategory
を2回定義して自分自身を繰り返していることがわかります。 category
というクラスに新しいプロパティを追加する方法がありますか?self.category
をget_queryset()
とget_context_data()
に一度定義してください。私はあなたが別の角度からそれに接近するべきだと思う、それはself.category()
+1。また、 'get_context_data'メソッドを完全に削除し、' {%with location_list = category.location_set.all%} 'をテンプレートに追加することで、コードをさらに単純化することができます。 –
これは私がやろうとしていたことよりもはるかに理にかなっています。ありがとう! – user1272534