Story と Category の 2 つの基本モデルがあります。
class Category(models.Model):
title = models.CharField(max_length=50)
slug = models.SlugField()
...
class Story(models.Model):
headline = models.CharField(max_length=50)
slug = models.SlugField()
categories = models.ManyToManyField(Category)
...
そして、ストーリーの詳細についての私の見解:
from django.views.generic import date_based, list_detail
from solo.apps.news.models import Story
def story_detail(request, slug, year, month, day):
"""
Displays story detail. If user is superuser, view will display
unpublished story detail for previewing purposes.
"""
stories = None
if request.user.is_superuser:
stories = Story.objects.all()
else:
stories = Story.objects.live()
return date_based.object_detail(
request,
year=year,
month=month,
day=day,
date_field='pub_date',
slug=slug,
queryset=stories,
template_object_name = 'story',
)
特定のストーリー オブジェクトのビュー (一般的な詳細ビューを使用しています) で、現在のストーリーに適用されているカテゴリを介して、現在のストーリーに関連するストーリーのリストを表示したいと考えています。
ストーリー詳細テンプレートで現在これを行っている方法は次のとおりです。
{% for category in story.category.all %}
<ul id="related_stories">
{% for story in category.story_set.all|slice:"5" %}
<li><a href="{{ story.get_absolute_url }}" title="{{ story.headline }}">{{ story.headline }}</a></li>
{% endfor %}
</ul>
{% endfor %}
これは、現在表示している記事のリンクされた見出しを表示したくないことを除けば、必要なものを提供してくれます。
これは「除外」フィルターを介して行われると思いますが、これがメソッドとしてカテゴリまたはストーリーモデルに属しているかどうか、またはそれを構築する方法がわかりません。
どんな助けでも大歓迎です!