首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据迁移过程中的Django-南部ValueError

数据迁移过程中的Django-南部ValueError
EN

Stack Overflow用户
提问于 2013-07-11 17:35:39
回答 1查看 414关注 0票数 3

我正在对用Django构建的系统进行一些更新,现在我在南方数据迁移方面遇到了一些麻烦。

我有一个模型货,它有一个外键到auth.User,现在我想添加一个外键到另一个型号(公司),这是相关的auth.User。

代码语言:javascript
复制
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和公司有关,如下所示:

代码语言:javascript
复制
class UserProfile(models.Model):
    company = models.ForeignKey(
        Company, 
        verbose_name='Empresa', 
        null=True
    )
    user = models.OneToOneField('auth.User')

我创建并运行了一个模式迁移来将公司字段添加到货物中,然后我创建了一个数据迁移,这样我就可以填充我所有货物的公司字段。我想出来的是:

代码语言:javascript
复制
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()

但是,当我试图运行它时,我会得到以下错误:

代码语言:javascript
复制
ValueError: Cannot assign "<Company: Thiago Rodrigues>": "Cargo.company" must be a "Company" instance.

但正如你在上面的模型中所看到的,这两个领域都是一样的.有人能用这个给我点光吗?我在Django 1.3.1和南方0.7.3

编辑:如下所示,UserProfileCompany模型在accounts模块中,Cargocargo中。所以,简而言之,我有accounts.UserProfileaccounts.Companycargo.Cargo

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-11 18:02:04

您使用的模型版本可能不匹配,因为您直接导入了:

代码语言:javascript
复制
from cargobr.apps.accounts.models import UserProfile

相反,尝试在迁移中使用orm引用该模型。

代码语言:javascript
复制
class Migration(DataMigration):

def forwards(self, orm):
    for cargo in orm['cargo.Cargo'].objects.all():
        profile = orm['accounts.UserProfile'].objects.get(user=cargo.customer)
        cargo.company = profile.company
        cargo.save()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17599895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档