Отображать только один экземпляр одного объекта в модели (Отличать другие экземпляры одного и того же объекта)

Я создаю простой сайт вопросов и ответов и пытаюсь реализовать функциональность, в которой пользователь может 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)
Вернуться на верх