Сериализатор Django: вычислять поле из нескольких параметров POST - PullRequest
0 голосов
/ 14 июня 2019

Я нормализую структуру модели / базы данных существующего приложения Django, но мне нужно сохранить оригинальный интерфейс API, чтобы все остальные системы могли обновляться независимо.Модель имеет внешний ключ для родительской таблицы, который должен быть разделен, и мне нужно вычислить «новый» внешний ключ из ряда входных параметров.

Эскиз старой ситуации:

class Parent(models.Model):
    parent_info = models.CharField(max_length=64)
    common_info = models.CharField(max_length=64)

class Child(models.Model):
    parent = models.ForeignKey(Parent, related_name='children')
    child_info = models.CharField(max_length=64)
    common_info = models.CharField(max_length=64)  # yes, it's duplicated

Что должно стать:

class Parent(models.Model):
    parent_info = models.CharField(max_length=64)

class Intermediate(models.Model):
    parent = models.ForeignKey(Parent, related_name='intermediates')
    common_info = models.CharField(max_length=64)

class Child(models.Model):
    intermediate = models.ForeignKey(Intermediate, related_name='children')
    child_info = models.CharField(max_length=64)  

Существующие вызовы API в классе Child предоставляют старые поля на верхнем уровне, поэтому для запросов POST должна быть возможность получить intermediate путем объединения parent и common_info, но на соответствующей странице документации не упоминается ничего полезного при объединении или разделении полей.Как бы я обновил обычный 101 * для прозрачной обработки этой миграции?

...