我想在模板上显示4个与当前项目具有相同标签的相关项目。 我正在使用django-taggit软件包,并且已阅读django-taggit doc
并且他们没有解释如何使用“ similar_objects()”来制作具有基于类的视图的相关项
我的views.py:
class GameDetail(DetailView):
model = Game
template_name = 'core/game_detail.html'
context_object_name = 'game_detail'
我的models.py:
class Game(models.Model):
name = models.CharField(max_length=140)
developer = models.CharField(max_length=140)
game_trailer = models.CharField(max_length=300, default="No Trailer")
game_story = models.TextField(default='No Story')
tags = TaggableManager()
我的模板“ game_detail.html”非常长,如果您可以解释如何在我的视图中使用django-taggit以及如何在模板上显示相关项目,我将不胜感激
答案 0 :(得分:0)
您可以这样构建视图:
class GameDetail(DetailView):
model = Game
template_name = 'core/game_detail.html'
context_object_name = 'game_detail'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["related_items"] = self.object.tags.similar_objects()[:4]
return context
然后,您可以像往常一样使用模板上的related_items
列表。
注意:如果您使用的是python2
,则super
调用应该是这样的:
context = super(self, GameDetail).get_context_data(**kwargs)