Я бы хотел попросить вас о помощи. Мне нужны данные из моей третьей модели в моей первой модели. И я сейчас борюсь с этим. Могу ли я исправить это как есть или мне придется пересобирать мой код? Может быть, сначала я покажу вам, что я получил.
models.py:
from django.db import models
from django.contrib.auth.models import User
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)
def __str__(self):
return self.question
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)
def __str__(self):
return self.answer
class VoteQuestion(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
question = models.ForeignKey(Question, on_delete=models.CASCADE, blank=False, null=True)
votesubmitted = models.DateTimeField(null=True, blank=True)
votesscore = models.IntegerField(default='0')
amountofvotes = models.IntegerField(default='0')
class Meta:
unique_together = ['user', 'question']
И в моем views.py я делаю это:
def home(request):
allquestionswithanswers = Question.objects.filter(datecompleted__isnull=False)
allquestionswithoutanswers = Question.objects.filter(datecompleted__isnull=True)
return render(request, 'main/home.html', {'allquestionswithanswers': allquestionswithanswers, 'allquestionswithoutanswers': allquestionswithoutanswers})
И это потому, что дома. html Я хочу Чтобы назвать это:
<ul>
{% for question in allquestionswithanswers %}
<li>
{{ question }} Score: {{ question.votesscore }} {{ question.user }}<br><br>
<form class='my-ajax-form' method='POST' action='' data-url="{% url 'questionvoteup' question.id %}" >
{% csrf_token %} <button type='submit'>UP</button> </form>
{% for answer in question.answer_set.all %} {{ answer }}<br> {% endfor %}
</li>
{% endfor %}
</ul>
И вот моя проблема. Я не могу назвать question.votesscore у себя дома. html Я не знаю, как это сделать. Я хочу использовать свою модель вопроса, так как я создаю запрос из модели вопроса.
Я гуглил и попытался добавить в модель вопроса следующее:
votesubmitted = models.ForeignKey('VoteQuestion', on_delete=models.CASCADE, related_name='question_votesubmitted')
votesscore = models.ForeignKey('VoteQuestion', on_delete=models.CASCADE, related_name='question_votesscore') amountofvotes = models.ForeignKey('VoteQuestion', on_delete=models.CASCADE, related_name='question_amountofvotes')
И я подумал, что это должно работать, но это ломает мою базу данных. Django во время миграции запрашивает значения по умолчанию (что странно, потому что они установлены в модели VoteQuestion), и если я удваиваю их, он портит базу данных.
Может кто-нибудь помочь мне или указать мне правильно Направление?
Спасибо.