Как запросить url подробного представления модели в результатах поиска
Я ищу в трех моделях, и все модели имеют различные детальные представления, но я не могу понять, как сказать django, чтобы он находил представления в соответствии с их моделью. вот мое представление для поиска в моделях
def search_item(request): results = [] search_item = request.GET.get("search")
>if search_item:
q = Q(title__icontains=search_item) | Q(written_by__icontains=search_item)
for model in (crypto, News, Movie):
results.extend(model.objects.filter(q))
return render(request, "result.html", {"results": results})
и для этого шаблона
{% for result in results %}
<a class="blog-card" href="">
<div class="card col-4" style="width: 18rem;">
<img src="{{ result.title_image.url }}" class="card-img-top" width="100%" height="200px">
<div class="card-body">
<h5 class="card-title text-center" style="color:black">{{ result.title|truncatewords:7 }}</h5>
<p class="card-text text-center" style="color:black">{{ result.info|truncatewords:10 }}</p>
<p class="number text-center" style="color: black;"> Wriiten By:<strong> {{ result.written_by }}</strong></p>
<p class="last text-center" style="color: black;"> Last update:<strong> {{ result.joined_date }}</strong></p>
</div>
</div>
</a>
{% endfor %}
и все модели имеют различные детальные представления, так что как это сделать urls.py
path('crypto/<slug:title>/',views.ttt_read,name="ttt_read"),
path('news/<slug:title>/',views.news_read,name="news_read"),
path('movie/<slug:title>/',views.movie_read,name="movie_read"),
path('penmen/search/',views.search_item,name='search')
любая помощь и предложение будут оценены по достоинству
Для каждой модели определите метод get_absolute_url()
. Проверьте документацию
Пример:
class News(models.Model):
...
def get_absolute_url(self):
return f"/news/{self.title}/"
Тогда в своем шаблоне вы можете просто сделать:
...
<a class="blog-card" href="{{result.get_absolute_url}}">
...