Django Queryset для поиска по названию статьи
Я пытаюсь найти название статьи с помощью набора запросов, я следую этому руководству по "базовой фильтрации", однако оно не работает для меня.
отслеживание терминала-
AttributeError: 'DeferredAttribute' object has no attribute 'filter'
views.py
class SearchResultsView(ListView):
model = Article
template_name = 'search_results.html'
queryset = Article.title.filter(name__icontains='1st')
Я попробовал использовать queryset = Article.objects.filter(name__icontains='1st')
, однако это привело к следующему результату, поэтому я использовал 'title', а не 'objects'
File "/Users/Lucas/Python/Projects/news/.venv/lib/python3.10/site-packages/django/db/models/sql/query.py", line 1677, in names_to_path
raise FieldError(
django.core.exceptions.FieldError: Cannot resolve keyword 'name' into field. Choices are: author, author_id, body, comment, date, id, title
models.py
class Article(models.Model):
title = models.CharField(max_length=225)
body = models.TextField()
date = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("article_detail", kwargs={"pk": self.pk})
Я посмотрел this, но не могу заставить его работать. Также попробовал documentation.
Если я удалю строку query set в нижней части класса, функция поиска возвращает все значения в соответствии с приведенным ниже .html файлом. Который отображает все содержимое статьи, но без каких-либо фильтров, конечно.
search_results.html
<ul>
{% for article in article_list %}
<li>
{{ article.title }}, {{ article.body }} {{ article.date }}{{ article.author }}
</li>
{% endfor %}
</ul>
Возможно, я что-то упускаю из модели? Спасибо.
Попытка:
queryset = Article.objects.filter(title__icontains='1st')
в SearchResultsView
В ошибке указано, что у вас нет поля name
. Поскольку вы используете поле title
, вам необходимо использовать его вместо этого.