私はこれを数時間試し、多くのドキュメントを調べましたが、正しく理解できません。私はこれに対する解決策がすぐに見つかるとは思わないので、誰かが何が悪いのかを見ることができるかもしれませんか?
すべてのカテゴリと、それらのカテゴリに接続されているすべてのエントリを表示するビューが必要です。
私はこの例に従おうとしました:djangoクラスベース-ビューのトピック
しかし、このエラーが発生します:タプルインデックスが範囲外です
私のモデル:
STATUS_CHOICES = (
('d', 'Draft'),
('p', 'Published'),
('w', 'Whitdrawn'),
)
class PublishedManager(models.Manager):
use_for_related_fields = True
def get_query_set(self):
return super(PublishedManager, self).get_query_set().filter(status='p')
class Category(models.Model):
name = models.CharField()
slug = models.SlugField()
status = models.CharField(max_length=1, default='d', choices=STATUS_CHOICES)
published = PublishedManager()
class Entry(models.Model):
name = models.CharField()
slug = models.SlugField()
category = models.ForeignKey(Category)
status = models.CharField(max_length=1, default='d', choices=STATUS_CHOICES)
published = PublishedManager()
私のURL
#View for all categories and all connected entries
url(r'^blog/$', AllCategories.as_view()),
#View for one category - and all the connected entries
url(r'^blog/(?P<slug>[-\w]+)/$', CategoryList.as_view()),
私の見解
class AllCategories(ListView):
context_object_name = "category_list"
queryset = Category.published.all()
class CategoryList(ListView):
template_name = 'blog/category_and_connected_entries.html'
def get_queryset(self):
self.category = get_object_or_404(Category, self=self.kwargs['slug'])
return Entry.published.filter(category=self.category)
def get_context_data(self, **kwargs):
# Call the base implementation first to get a context
context = super(CategoryList, self).get_context_data(**kwargs)
# Add in the category
context['category'] = self.category
return context
どんな助けでも大歓迎です!
編集:
カスタムマネージャーを追加しました。次のように、すべてのカテゴリとそれらに接続されている すべての全体を一覧表示するためのテンプレートに、公開されていない全体が表示されないという問題があります。
- カテゴリー1
- 公開されたエントリ1
- 公開されたエントリ3
- カテゴリー2
- 公開されたエントリ7
- 公開されたエントリ9
これをforループで使用して、接続された全体を取得しますが、公開されていない全体も一覧表示します。
{category.entry_set.allのエントリの%%}