Как выбрать объекты из модели для создания копий в другой модели, добавив дополнительные параметры в django?

У меня есть следующие модели:

class Questionnaire(models.Model):
    questionnaire_name = models.CharField(max_length=120, default="")
    ...

class Question(models.Model):
    question_body = models.TextField()
    ...

class QuestionnaireContent(models.Model):
    questionnaire = models.ForeignKey(Questionnaire)
    question = models.ForeignKey(Question)
    ...

Модель QuestionnaireContent действует как список шаблонов анкет. В конечном итоге они назначаются пользователям с помощью:

class QuestionnaireAssignment(models.Model):
    user = models.ForeignKey(User)
    questionnaire = models.ForeignKey(Questionnaire)

Теперь, в идеале, я бы хотел, чтобы это задание создало новый "экземпляр" анкеты в другой модели, которая будет иметь следующие поля:

class QuestionnaireInstance(models.Model):
    user = models.ForeignKey(User)
    questionnaire = models.ForeignKey(Questionnaire)
    question = models.ForeignKey(Question)
    visibility = models.BooleanField()

Но я хотел бы, чтобы QuestionnaireInstance создавался автоматически после создания экземпляра QuestionnaireAssignment. Думаю, я мог бы переписать функцию сохранения QuestionnaireAssignment, но мне интересно, есть ли более простой/чистый способ сделать это?

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

Спасибо за помощь!!!

Одной из возможностей является переопределение метода save() из QuetionnaireAssignment. Обратите внимание, что вам не обязательно полностью переписывать save(), поскольку вы можете вызвать super().save().

Вместо этого используйте сигнал postsave: docs.djangoproject.com/en/4.1/topics/signals

Вернуться на верх