如何在基于 Class 的视图中使用 django-taggit similar_objects()
How to use django-taggit similar_objects() with Class-based views
我想在我的模板上显示 4 个与当前项目具有相同标签的相关项目。
我正在使用伟大的包 django-taggit 并且我已经阅读了 django-taggit doc
并且他们没有解释如何使用 "similar_objects() " 制作具有基于 Class 的视图的相关项目
我的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" 很长 post 如果你能解释一下如何在我的视图中使用 django-taggit 以及如何在模板上显示相关项目,我会的感恩
您可以这样构建视图:
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)
我想在我的模板上显示 4 个与当前项目具有相同标签的相关项目。 我正在使用伟大的包 django-taggit 并且我已经阅读了 django-taggit doc
并且他们没有解释如何使用 "similar_objects() " 制作具有基于 Class 的视图的相关项目
我的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" 很长 post 如果你能解释一下如何在我的视图中使用 django-taggit 以及如何在模板上显示相关项目,我会的感恩
您可以这样构建视图:
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)