Django. Мне нужны данные в моей «первой» модели из моей «третьей» модели. Значит ли это, что я допустил ошибку или это выполнимо? - PullRequest
0 голосов
/ 30 апреля 2020

Я бы хотел попросить вас о помощи. Мне нужны данные из моей третьей модели в моей первой модели. И я сейчас борюсь с этим. Могу ли я исправить это как есть или мне придется пересобирать мой код? Может быть, сначала я покажу вам, что я получил.

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), и если я удваиваю их, он портит базу данных.

Может кто-нибудь помочь мне или указать мне правильно Направление?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...