Related Field got invalid lookup: icontains - While Search Tag

Я создаю BlogApp и пытаюсь реализовать поле поиска, которое будет искать (фильтровать) по введенным tag.

Когда я пытаюсь зайти на страницу, она продолжает отображаться

Связанное поле получило недействительный поиск: icontains

models.py

class BlogPost(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=30,default='')
    tags = TaggableManager()

views.py

from taggit.models import Tag

def search_page(request):
    query = request.GET.get('p')
    object_list = BlogPost.objects.filter(tags__icontains=query)

    context = {'posts': object_list, 'query': query}
    return render(request, 'search.html', context)

Я также пробовал разные методы, но все равно выдает ту же ошибку.

  • Я попробовал .filter(tags__in=query) затем он показал

Объект 'NoneType' не является итерируемым

  • Я попробовал Tag.objects.filter(question__tags__icontains=query) затем он показал

Связанное поле получило недействительный поиск: icontains

Любая помощь будет очень признательна. Thank You in Advance.

Вы должны указать, что вы ищете имя тега, так:

object_list = BlogPost.objects.filter(tags__name__icontains=query)

Вы должны фильтровать только при наличии запроса, поэтому:

from taggit.models import Tag

def search_page(request):
    query = request.GET.get('p')
    object_list = BlogPost.objects.all()
    if query is not None:
        object_list = object_list.filter(tags__icontains=query)
    context = {'posts': object_list, 'query': query}
    return render(request, 'search.html', context)

вероятно, вы также хотите использовать q вместо p для имени параметра запроса.

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