Как выбрать объекты из модели для создания копий в другой модели, добавив дополнительные параметры в 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