Я пишу несколько тестов для приложения викторины / теста для Django.Соответствующая модель - PreguntasPrueba
, которая представляет собой вопрос в викторине и содержит отношения ForeignKey с моделью викторины (Diagnostico
), моделью ответа (Respuesta
) (это ответ пользователя) иВопрос (Pregunta
) model.
соответствующий фрагмент models.py :
class PreguntasPrueba(models.Model):
prueba = models.ForeignKey(
"Diagnostico",
on_delete=models.CASCADE,
editable=False,
related_name='preguntas_usadas'
)
pregunta = models.ForeignKey(
"Pregunta",
on_delete=models.CASCADE,
related_name='apariciones'
)
respuesta = models.ForeignKey(
"Respuesta",
on_delete=models.CASCADE,
null=True,
related_name='seleccion_usuarios'
)
В test.py я создаю в setUpTestData связку Preguntaэкземпляры (каждый из которых связан с набором экземпляров Respuesta, а затем создает экземпляр Diagnostico.
В одном из тестов я пытаюсь утверждать, что мой метод проверки правильных ответов работает, назначая экземпляр ответаЭкземпляр вопроса (см. модель выше), но при этом я вызываю save()
и refresh_from_db()
для экземпляра, и назначение ForeignKey работает , а не . Я полностью растерялся относительно того, почему этобывает ... Любая помощь будет оценена.
соответствующий фрагмент test.py :
# get all the questions used in the quiz instance (I'm certain there are only 3)
preguntas = self.diagnostico.preguntas_usadas.all()
# assign individually corresponding Respuesta (answer) instances (This is kinda simulating a user's choice
preguntas[0].respuesta = Respuesta.objects.get(pk=2)
preguntas[1].respuesta = Respuesta.objects.get(pk=5)
preguntas[2].respuesta = Respuesta.objects.get(pk=14)
# I iterate over the queryset to save it and reload it for future use
for pregunta in preguntas:
pregunta.save(update_fields=['respuesta']) #saving
pregunta.refresh_from_db() # supposedly refresh?? But I don't know what I'm doing wrong...
print(pregunta.respuesta) # this returns None everytime. I've made sure the Respuesta objects above do exist
Я знаю, что это может быть очень мало приведено кода, но естьтак много, что япока не совсем уверен, как различить «соответствующий» код, первый вопрос ...
Заранее благодарю за любую помощь!:)