Прошу прощения, если мой заголовок не имеет для вас особого смысла. У меня проблема, и я не могу ее описать. Буду очень признателен, если вы мне поможете.
У меня есть небольшая система голосования для моих объектов вопросов. На мои вопросы есть много ответов, которые я перечисляю в "question_details" для l oop. Я, конечно, могу получить доступ к модели вопросов и, следовательно, получить информацию о голосовании за вопрос, но я не могу сделать то же самое для каждого ответа. Может быть, какой-нибудь код для лучшей иллюстрации:
views.py:
def questiondetails(request, question_pk):
question = get_object_or_404(Question, pk=question_pk)
question_form_id = question
total_voteup = question.total_voteup()
total_votedown = question.total_votedown()
is_voteup = False
is_votedown = False
if question.voteup.filter(id=request.user.id).exists():
is_voteup = True
if question.votedown.filter(id=request.user.id).exists():
is_votedown = True
Я могу проверить количество голосов, и я могу проверить, проголосовал ли пользователь за или против.
в шаблонах вопросов я делаю примерно так:
{% for answer in question.answer_set.all %}
{{ answer }}<br>
<div id="answer_voting_section">
{% include 'main/partials/answer_voting_section.html' %}
</div>
{% endfor %}
И с этим. Я могу нажать на свой вопрос, он вызовет "questiondetails" и приведет меня на страницу с вопросами и ответами, исходящими из этого для l oop.
И моя проблема в том, что я хотел бы получить доступ " total_voteup "(и другие вещи) для каждого ответа из этого для l oop.
Как я могу это сделать? Я новичок в python на django, поэтому я понимаю, что могу делать это только с вопросами и деталями вопросов, потому что Я ПРОХОДЯ "question_pk". Могу ли я в том же DEF получить доступ к ответам, связанным с этим вопросом? Или это невозможно, потому что эти данные "пока не видны" для django?
@ Edit:
Мои модели:
class Question(models.Model):
question = models.CharField(max_length=300)
answered = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
datecompleted = models.DateTimeField(null=True, blank=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
voteup = models.ManyToManyField(User, related_name='voteup', blank=True)
votedown = models.ManyToManyField(User, related_name='votedown', blank=True)
def __str__(self):
return self.question
def total_voteup(self):
return self.voteup.count()
def total_votedown(self):
return self.votedown.count()
class Answer(models.Model):
question_id = models.ForeignKey(Question, on_delete=models.CASCADE, blank=False, null=True)
answer = models.TextField(max_length=1000)
created = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
answer_voteup = models.ManyToManyField(User, related_name='answer_voteup', blank=True)
answer_votedown = models.ManyToManyField(User, related_name='answer_votedown', blank=True)
def __str__(self):
return self.answer
def total_answer_voteup(self):
return self.answer_voteup.count()
def total_answer_votedown(self):
return self.answer_votedown.count()