从主模型实例- django中获取用户特定的答案属性



我有一个问题模型和一个答案模型。答案模型保存特定于登录用户的答案。我已经成功保存了登录用户的答案,并在admin中进行了验证。但是,我无法得到答案,特别是对于登录的用户。你能给我指个正确的方向吗?我已经试过了https://docs.djangoproject.com/en/3.1/ref/models/relations/

我的模型:

class Question(models.Model):
question = models.CharField(max_length=200, null=True, blank=True)
edit_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.question
class Answer(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
answer = models.TextField(max_length=600, null=True, blank=True, default=" ")
edit_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.answer

我的观点

def InterviewQuestion(request):
questions = Question.objects.all()
context = {'questions':questions}
return render(request, 'jobs/ace-interview.html', context)

我的模板
{% for question in questions %}
<div class="card">
<div class="card-body">
<h5 class="card-title">{{question.question}}</h5>
<p class="card-text">{{question.answer_set.answer}}</p>
</div>
</div>
{% endfor %}

我希望这里的答案特定于用户

您需要根据当前登录的用户过滤Answer,将其传递给模板的上下文,然后在HTML页面上呈现。类似以下语句:

在你看来:

def InterviewQuestion(request):
questions = Question.objects.all()
question_answers = {}
for question in questions:
answer = Answer.objects.filter(user=request.user, question=question).first()
question_answers[question] = answer
context = {'question_answers': question_answers}
return render(request, 'jobs/ace-interview.html', context)
使用上面的代码,你现在将得到一个特定于用户的字典,看起来像这样(请记住,它不是键/值的str,而是Django模型):
{
...
"Your name?": "Felipe",
...
# Realistically, it looks something more like:
<Question Model>: <Answer Model>
}

将上述内容传递给上下文将允许您呈现问题和答案。

{% for question, answer in question_answers.objects %}
<div class="card">
<div class="card-body">
<h5 class="card-title">{{question.question}}</h5>
<p class="card-text">{{answer.answer}}</p>
</div>
</div>
{% endfor %}

这样的东西应该可以工作。你可能想要按照自己的喜好格式化视图代码,并仔细检查语法是否正确(直接在StackOverflow上编写-不检查我的端)。

最新更新