Получить все данные из модели искомого тега на другой странице
Я создаю простое веб-приложение "Вопросы и ответы" и реализую функцию поиска по тегам, и оно будет показывать все вопросы, связанные с ним.
Теперь я пытаюсь показать все данные моделей на другой странице, которая прикреплена к этому искомому тегу.
Затем я делаю запрос другой модели с searched tag
, но он показывает
Поле 'id' ожидало число, а получило 'first_post'.
models.py
class Question(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=30,default='')
tags = TaggableManager()
class Answer(models.Model):
answer_user = models.ForeignKey(User,on_delete=models.CASCADE)
quest = models.ForeignKey(Question,on_delete=models.CASCADE)
body = models.CharField(max_length=30)
views.py
def search(request):
query = request.GET.get('q')
answer = ''
objs = ''
if query:
objs = Question.objects.filter(tags__name__icontains=query)
answer = Answer.objects.filter(quest=query)
context = {'objs': objs,'answer':answer}
return render(request, 'search.html', context)
Когда я запускаю эту программу, она показывает Field 'id' expected a number but got 'first_post'
.
Что я пытаюсь сделать :-
Я пытаюсь сделать страницу поиска и если я ищу тег, то ссылка на другую страницу всех ответов искомых тегов, Но я понятия не имею, как я могу прикрепить два вида, чтобы одна страница показывала результаты, а другая показывала ответы.
Любая помощь будет очень признательна. Заранее благодарю
Когда вы не указываете, какое поле вы ищете в таблице quest, она будет искать id по default. Поэтому вам необходимо явно определить имя таблицы:
answer = Answer.objects.filter(quest__tags__name__icontains=query)
Доброе утро, вам нужно отфильтровать ответы на вопросы, связанные с заданным тегом:
def search(request):
query = request.GET.get('q')
answer = ''
objs = ''
if query:
objs = Question.objects.filter(tags__name__icontains=query)
answer = Answer.objects.filter(quest__in=objs)
context = {'objs': objs,'answer':answer}
return render(request, 'search.html', context)