Ho un modello che ha una colonna in questo momento, description
, che popola un'area su alcune diverse pagine del sito. Il cliente vuole che questo divida in un paio di colonne diverse, in modo che possano popolare valori diversi in alcune parti del sito. Quindi devo cambiare la colonna description
in frontpage_description
e resourcepage_description
. Sto cercando di trovare un modo per farlo in Sud in modo che il valore della colonna description
sia il valore predefinito (iniziale) per entrambe le "nuove" colonne. Questo è quello che ho finora:Valore predefinito di migrazione sud da un'altra colonna?
# 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 = {
# ...
La parte mi chiedo è di circa il self.gf(...)(default='CHANGEME')
, mi chiedo se c'è un modo per impostare il valore di description
o frontpage_description
essere il valore di default per resourcepage_description
?
Ho esaminato il parametro orm
, che consente di accedere ai modelli durante la migrazione, ma tutti gli esempi che ho incontrato implicano l'utilizzo di esso per definire le relazioni durante una migrazione e non accedere effettivamente ai singoli record.
Devo dividerlo in uno schemamigration e una datamigration?
sì, mi sono reso conto di ciò che mi mancava poco dopo aver postato qui: - /. In realtà è un processo in due passaggi, perché posso eseguire 'db.rename_column' e aggiungere solo 1 colonna, quindi eseguire la datamigration per le due colonne. –