如何使用 django-taggit 抓取相关 post/item?

How to grab related post/item using django-taggit?

我是django/python的新人,请多多包涵。

我想在 Django 中创建某种 "Related Post"。我该怎么做?我正在关注这个:

但不知道如何 use/implement 它以及如何在模板中呈现它。这是我的观点:

def trip_list(request):
    trip_list = Trip.objects.filter(misc_published=True).order_by('-misc_published')[:12]
    related = Trip.objects.filter(tags=trip_list.tags.similar_objects())[:3]
    return render(request, 'app_trip/trip_list.html', {'trip_list': trip_list})

如有任何帮助,我们将不胜感激!

谢谢

------------更新------------

好吧,唠叨了一遍代码,貌似差不多成功了,但是报错:

ValueError at /trip/tour-island/

Cannot query "bali island Tour": Must be "Tag" instance.

这是我更新的代码:

def trip_single(request, slug):
    trip = get_object_or_404(Trip, slug=slug)
    trip_related = Trip.objects.filter(misc_published=True, tags=trip.tags.similar_objects())[:3]
    return render(request, 'app_trip/trip_single.html', {'trip': trip}, {'trip_related': trip_related})

在模板中

{% for trip in trip_related %}
   <h1>{{ trip.title }}</h1>
{% endfor %}

谢谢

------------更新[已解决!]------------

使用model_name.tags.similar_objects()

在views.py中:

def trip_single(request, slug):
    trip = get_object_or_404(Trip, slug=slug)
    trip_related = trip.tags.similar_objects() # Where the magic happen
    return render(request, 'app_trip/trip_single.html', {'trip': trip, 'trip_related': trip_related})

在模板中 :

{% for trip in trip_related %}
    <h1>{{ trip.trip_judul }}</h1>
{% endfor %}

谢谢!

similar_objects返回的是一个trip列表,可以这样写:

trip_related = [a_trip 
                for a_trip in trip.tags.similar_objects() 
                if a_trip.misc_published
               ][:3]