Значение по умолчанию для южной миграции из другого столбца? - PullRequest
5 голосов
/ 01 сентября 2011

У меня есть модель с одним столбцом прямо сейчас, description, которая заполняет область на нескольких разных страницах сайта.Клиент хочет, чтобы это было разбито на пару разных столбцов, чтобы они могли заполнять разные значения в определенных частях сайта.Поэтому я должен изменить этот столбец description на frontpage_description и resourcepage_description.Я пытаюсь найти способ сделать это на юге, чтобы значение столбца description было (начальным) значением по умолчанию для обоих «новых» столбцов.Это то, что у меня пока есть:

# file: project/app/xxxx_mymigration.py
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models

class Migration(SchemaMigration):
    def forwards(self, orm):
        db.rename_column('myapp', 'description', 'frontpage_description')
        db.add_column('myapp', 'resourcepage_description', self.gf('myfields.TextField')(default='CHANGEME'), keep_default=False)

    def backwards(self, orm):
        db.rename_column('myapp', 'frontpage_description', 'description')
        db.delete_column('myapp', 'resourcepage_description')

    models = {
        # ...

Часть, которая меня интересует, это self.gf(...)(default='CHANGEME'), мне интересно, есть ли способ установить значение description или frontpage_description вбыть значением по умолчанию для resourcepage_description?

Я рассмотрел параметр orm, который позволяет вам получать доступ к моделям во время миграции, но все примеры, с которыми я сталкивался, включают его использование для определения отношенийво время миграции и фактически не обращаясь к отдельным записям.

Мне просто нужно разделить это на схему миграции и миграцию данных?

1 Ответ

2 голосов
/ 01 сентября 2011

Это в три этапа: миграция схемы для добавления столбцов, миграция данных для их установки и другая миграция схемы для удаления исходного столбца description.90% этого делается для вас с помощью команды ./manage, так что это не так трагически больше работы.

...