我正在对使用 Django 构建的系统进行一些更新,现在我在进行南方数据迁移时遇到了一些麻烦。
我有一个模型 Cargo,它具有 auth.User 的外键,现在我想将外键添加到与 auth.User 相关的另一个模型(公司)。
class Cargo(models.Model):
company = models.ForeignKey(
'accounts.Company',
related_name='cargo_company',
verbose_name='empresa',
null=True,
blank=True
)
customer = models.ForeignKey(
'auth.User',
related_name='cargo_customer',
verbose_name='embarcador',
limit_choices_to={'groups__name': 'customer'},
null=True,
blank=True
)
我还有一个 UserProfile 模型,它与 auth.User 和 Company 相关,如下所示:
class UserProfile(models.Model):
company = models.ForeignKey(
Company,
verbose_name='Empresa',
null=True
)
user = models.OneToOneField('auth.User')
我创建并运行了一个架构迁移以将公司字段添加到 Cargo,然后我创建了一个数据迁移,以便我可以填充我所有货物的公司字段。我想出的是:
class Migration(DataMigration):
def forwards(self, orm):
try:
from cargobr.apps.accounts.models import UserProfile
except ImportError:
return
for cargo in orm['cargo.Cargo'].objects.all():
profile = UserProfile.objects.get(user=cargo.customer)
cargo.company = profile.company
cargo.save()
但是当我尝试运行它时,我收到以下错误:
ValueError: Cannot assign "<Company: Thiago Rodrigues>": "Cargo.company" must be a "Company" instance.
但正如您在上面的模型中看到的那样,这两个领域是同一种类型......谁能给我一个启示?我在 Django 1.3.1 和 South 0.7.3
编辑:如下所述,UserProfile
andCompany
模型在一个accounts
模块中,并且Cargo
在cargo
. 所以,简而言之,我有accounts.UserProfile
,accounts.Company
并且cargo.Cargo