Вызов Model.refresh_from_db () не работает после сохранения модели с назначением ForeignKey - PullRequest
1 голос
/ 17 марта 2019

Я пишу несколько тестов для приложения викторины / теста для 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

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

Заранее благодарю за любую помощь!:)

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