2
我試圖開始南數據遷移。我發現這個問題:South data migration 'instance' error when using south freeze orm,並嘗試列出的命令,但它似乎沒有幫助。Django,South和--freeze命令
我有兩個應用程序A和B在我的項目,這裏有他們的模型:
# /app_A/models.py
from django.db import models
class Employee(models.Model):
name = models.CharField(max_length = 100)
department = models.ForeignKey("Department")
manager = models.ForeignKey("self", blank = True, null = True)
birthdate = models.DateField()
# /app_B/models.py
from django.db import models
from hr_manager.models import Employee
class Task(models.Model):
title = models.CharField(max_length=50)
description = models.TextField()
assigned_to = models.ForeignKey(Employee, null=False, blank=False)
seniority = models.IntegerField(default=0)
age = models.IntegerField(default=0)
我試圖生成APP_B數據遷移,使其計算員工工作的年齡和senority被分配並存儲在任務本身中。我跑了:
./manage.py datamigration app_B populate_age_and_senority --freeze app_A
--freeze選項應該使app_A的模型在通過orm ['app_1。']進行遷移時可用。然後我編輯創建這樣的遷移:
from south.db import db
from south.v2 import DataMigration
from django.db import models
class Migration(DataMigration):
def forwards(self, orm):
import datetime
def calculate_age(born):
''' Returns the age from a starting date '''
...
birthdate = orm['hr_manager.Employee'].birthdate
date_joined = orm['hr_manager.EmployeeHistory'].date_joined
orm.Task.age = calculate_age(birthdate)
orm.Task.seniority = calculate_age(date_joined)
orm.Task.save()
def backwards(self, orm):
raise RuntimeError("Cannot reverse this migration.")
然後跑去:
./manage.py migrate app_B
這是我獲得的:
AttributeError: type object 'Employee' has no attribute 'birthdate'
難道我做錯了什麼?
在此先感謝您的幫助!
確實,這工作得很好。 謝謝@dlamotte。 :) – 2011-06-03 15:13:42