Как использовать django-taggit Similar_objects () с представлениями на основе классов - PullRequest
0 голосов
/ 06 сентября 2018

Я хочу отобразить 4 связанных элемента в моем шаблоне, которые имеют те же теги, что и текущий элемент. Я использую большой пакет django-taggit и прочитал django-taggit doc

и они не объяснили, как использовать «Similar_objects ()» для создания связанного элемента с представлениями на основе классов

my views.py:

class GameDetail(DetailView):
    model = Game
    template_name = 'core/game_detail.html'
    context_object_name = 'game_detail'

my 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 в моем представлении и как отобразить связанный элемент в шаблоне, я буду благодарен

1 Ответ

0 голосов
/ 06 сентября 2018

Вы можете построить свой вид следующим образом:

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)
...