Как при создании объекта одной модели создавать зависимые объекты другой модели в Django Rest

В моем проекте существует 2 модели, которые связаны между собой через ForeignKey. При загрузке фала с данными начинает создаваться объект первой модели Spectrum. Но также после создания объекта спектра должны создаваться объекты модели Metadata, их может быть несколько, в зависимости от того сколько было передано значений в файле. Вопрос заключается в том, как это делать правильно, чтобы создавался спектр и к нему создавались и привязывались объекты метадата. Вот примеры моих моделей:

class Spectrum(models.Model):
    spectrum = models.TextField(db_index=True, verbose_name="Спектр")
    lastUpdated = models.DateTimeField(auto_now=True, verbose_name="Дата обновления")
    dateCreated = models.DateTimeField(auto_now_add=True, verbose_name="Дата создания")
    lastCurated = models.DateTimeField(auto_now_add=True, verbose_name="Дата создания")
    date_prepare = models.DateField(db_index=True, blank=True, null=True, verbose_name="Дата исследования")
    submitter = models.ForeignKey(User, on_delete=models.PROTECT, verbose_name="Оператор")
    similarity = models.FloatField(default=0, db_index=True, verbose_name="Сходство")
    draft = models.BooleanField(default=True, verbose_name="Черновик")
    library = models.ForeignKey('Library', default=1, blank=True, db_index=True, on_delete=models.PROTECT,
                                related_name='spectrums', verbose_name="Библиотека")
    tags = models.ManyToManyField('Tag', blank=True, related_name='spectrums', verbose_name="Теги")
    field = models.CharField(max_length=255, blank=True, db_index=True, verbose_name="any_field")
    reg_num = models.CharField(max_length=64, blank=True, db_index=True, verbose_name="Регистрационный номер")
    is_etalon = models.BooleanField(default=False, verbose_name="Эталон")
    metaDataMap = models.JSONField(db_index=True, default=dict, verbose_name="Метаданные")

class Metadata(models.Model):
    spectrum = models.ForeignKey('Spectrum', on_delete=models.CASCADE, related_name="metadata")
    url = models.CharField(max_length=255, blank=True, null=True, verbose_name="url")
    name = models.CharField(max_length=255, blank=True, null=True, verbose_name="name")
    value = models.CharField(max_length=255, blank=True, null=True, verbose_name="value")
    hidden = models.BooleanField(default=False, verbose_name="hidden")
    category = models.CharField(max_length=64, blank=True, null=True, verbose_name="category")
    computed = models.BooleanField(default=False, verbose_name="computed")
    unit = models.CharField(max_length=255, blank=True, null=True, verbose_name="unit")
    nodes = models.JSONField(db_index=True, default=dict, verbose_name="nodes")

У меня есть сериализаторы и вьюхи:

class MetadataViewSet(viewsets.ModelViewSet):
    queryset = Metadata.objects.all()
    serializer_class = MetadataSerializer
    permission_classes = (IsAuthenticatedOrReadOnly,)

class SpectrumViewSet(viewsets.ModelViewSet):
    queryset = Spectrum.objects.all()
    serializer_class = SpectrumSerializer
    permission_classes = (IsAuthenticatedOrReadOnly,)

Буду рад любой помощи. Если нужны уточнения, по вопросу, пишите.


Ответы (0 шт):