Django object.filter возвращает объект (1) в строке поиска
Итак, у меня есть проект сайта Django, который содержит базу данных всех различных книг, хранящихся в ней. С помощью строки поиска, если я ввожу название, она показывает результаты из базы данных. Проблема в том, что когда я ввожу название (One Piece или Attack On Titan), вместо того, чтобы показать название книги, он будет показывать Book Object (1) или Book Object (2) в зависимости от того, какое название я набираю, и я не знаю почему.
Здесь я определил свои классы:
class Book(models.Model):
title = models.CharField(max_length=255)
author = models.CharField(max_length=255)
editor = models.CharField(max_length=255)
year_published = models.IntegerField()
number_in_stock = models.IntegerField()
daily_rate = models.FloatField(null=True)
genre = models.ForeignKey(Genre, on_delete=models.CASCADE)
date_created = models.DateTimeField(default=timezone.now)
manga_image = models.ImageField(null=True, blank=True, upload_to='images/')
Здесь я определил свои запросы:
def search_manga(request):
if request.method == "POST":
searched = request.POST[('searched')]
mangas = Book.objects.filter(title__contains=searched)
return render(request, 'books/search_manga.html', {'searched': searched, 'mangas': mangas})
else:
return render(request,'books/search_manga.html', {})
Также это HTML документ, на котором я пытаюсь показать результаты:
{% extends 'base.html' %}
{% block content %}
<style>
h1 {
text-align: center;
}
</style>
{% if searched %}
<h1>You Searched For {{searched}}</h1>
<br/>
{% for manga in mangas %}
{{ manga }}<br/>
{% endfor %}
{% else %}
<h1>Hey! You Forgot To Search For A Manga</h1>
{% endif %}
{% endblock %}
Обратите внимание, что я очень новичок в Django.
Ваш метод render()
возвращает в шаблон QuerySet of Books (mangas
). Вам нужно перебрать этот набор книг и отобразить атрибуты, которые вас интересуют в вашем шаблоне, следующим образом:
{% for x in mangas %}
name is {{ x.title }}
{% endfor %}