Джанго Юг: миграция ФК из другого стола - PullRequest
1 голос
/ 11 июля 2011

Я делал какую-то систему, и мой дизайн стола был таким:

Table A:
   - ID
   - ForeignKey(C)

Table B:
   - ID
   - ForeignKey(A)

Table C:
   - ID

В связи с некоторыми изменениями требований мне нужно переместить ForeignKey (C) с A на B, поэтому оно выглядит следующим образом:

Table A:
    - ID

Table B:
    - ID
    - ForeignKey(A)
    - ForeignKey(C)

-Table C:
    - ID

Миграция схемы была простой. Но в прошлый раз у меня уже были некоторые существующие данные FK в таблице А., которые я не могу просто удалить сразу. Мне нужно перенести этот FK в таблицу B. Структура B отличается, как и данные внутри. Когда я добавлял ForeignKey (C) в модель B, Саут спрашивал у меня значение по умолчанию, потому что я не предоставил никакого значения по умолчанию, и он не допускает NULL. Выбор заключался в том, чтобы выйти из схемы с миграцией и добавить значение по умолчанию вручную или указать одноразовое значение.

У меня вопрос, как я могу добавить значение по умолчанию / 1 раз, которое импортируется из существующих данных в таблице A, используя Юг ?. Я искал подобную проблему, но не повезло: (

Спасибо.

1 Ответ

6 голосов
/ 11 июля 2011

При выполнении этого типа миграции я всегда создаю 3 миграции:

  1. создает новое поле
  2. (миграция данных) копирует данные из старого поля в новое поле (возможно с преобразованием)
  3. удаляет старое поле

Таким образом, я могу использовать автоматическую миграцию схемы с юга для первой и третьей миграции, и мне нужно только написать некоторый простой код преобразования,Это работает как в этом примере в южном учебнике.

...