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, вам необходимо использовать его вместо этого.

Вернуться на верх