Отображать только один экземпляр одного объекта в модели (Отличать другие экземпляры одного и того же объекта)
Я создаю простой сайт вопросов и ответов и пытаюсь реализовать функциональность, в которой пользователь может upload 4 answers But I am trying to hide show only any one answer
И это показывает все ответы, связанные с вопросом.
Например :- вопрос_a имеет 4 ответа, я пытаюсь показать любой из них.
models.py
class Question(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=30)
marked = models.BooleanField(booleanField)
class Answer(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
question_of = models.ForeignKey(BlogPost, on_delete=models.CASCADE)
body = models.CharField(max_length=30)
views.py
def page(request):
query_2 = Answer.objects.filter(question_of__marked=True)[:1]
context = {'query_2':query_2}
return render(request, 'page.html', context)
В этом запросе я пытаюсь показать ответы на вопросы, которые имеют marked=True
и я также пытаюсь показать только один ответ на вопрос, но он показывает 4.
После использования [:1] он показывает результат только в all.
Я также пробовал
.distinct()
, но это не повлияло на результаты.
Я буду очень признателен за вашу помощь. Спасибо
Это возьмет первую строку из запроса
query_2 = Answer.objects.filter(question_of__marked=True).first()
Модель ответа имеет отношения один ко многим с моделью blogPost, а не с моделью вопроса, измените это и все должно работать. И второе - передайте вопрос, на который вы хотите получить первый ответ. И наконец, измените поле BooleanField, которое вы передаете в качестве параметра, и используйте значение по умолчанию, если хотите.
marked = models.BooleanField(default=False)
def page(request):
quest = Question.objects.get(pk=1) # the quest obj
query_2 = [Answer.objects.filter(question_of__marked=True)[:1]]
context = {'query_2':query_2}
return render(request, 'page.html', context)