Я нормализую структуру модели / базы данных существующего приложения 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 * для прозрачной обработки этой миграции?