Дублирование модели Django с вложенными дочерними элементами
У меня есть модель с вложенными детьми и я хочу продублировать ее, я попробовал несколько решений, но не смог решить свою проблему!
вот мои модели, чтобы показать взаимоотношения между ними:
class Form(models.Model):
form_id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
form_title = models.CharField(max_length=100)
class Page(models.Model):
page_id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
page_title = models.CharField(max_length=100)
form = models.ForeignKey(Form, related_name='pages')
class Section(models.Model):
section_id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
section_title = models.CharField(max_length=100)
page = models.ForeignKey(Page, related_name='sections')
class Question(models.Model):
question_id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
question_title = models.CharField(max_length=100)
section = models.ForeignKey(Section, related_name='questions')
class Answer(models.Model):
answer_id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
answer_value = models.TextField(blank=True)
question = models.OneToOneField(Question, related_name="question")
Я использовал это решение, я мог дублировать форму и страницы, но не мог перейти к дублированию других детей!
class DuplicateFormAPI(views.APIView):
def get(self, request, form_id):
form = Form.objects.filter(form_id=form_id).first()
form.form_id = None
form.save()
duplicated_form_id = FormSerializer(form).data.get('form_id')
pages = Page.objects.filter(form_id=form_id).all()
for page in pages:
page.page_id = None
page.form_id = duplicated_form_id
page.save()
return Response({
"status": status.HTTP_200_OK,
"message": "Form duplicated successfully!",
"form": FormSerializer(form).data,
})
Кто-нибудь может помочь или подсказать?