【问题标题】:South Data Migration Fails with ValueError when Function Tries to Access a Table Through a Foreign Key当函数尝试通过外键访问表时,South 数据迁移失败并出现 ValueError
【发布时间】:2014-08-11 10:07:00
【问题描述】:

我的数据迁移引用了一个函数,该函数将当前模型的一个对象作为参数,然后尝试通过外键从另一个表(在同一个应用程序中)创建一个对象。该对象的创建失败并出现值错误,指出作为参数传递的对象不是预期类的实例(尽管它是)。这两个表之间似乎没有链接。

这里是数据迁移。

    for ranking in orm.Ranking.objects.all():
        find_matching_domains(ranking)

find_matching_domains 在另一个应用程序中声明并在数据迁移中导入。尝试创建字典对象时失败。

    dico = CategoryDict(category=ranking.category,
                    key="url_dict",
                    value=url_dict)

出现以下错误:

File "...", line 175, in save_url_dict value=url_dict)
File ".../lib/python2.6/site-packages/django/db/models/base.py", line 355, in __init__ setattr(self, field.name, rel_obj)
File ".../lib/python2.6/site-packages/django/db/models/fields/related.py", line 366, in __set__ self.field.name, self.field.rel.to._meta.object_name))
ValueError: Cannot assign "<Category: Category object>": "CategoryDict.category" must be a "Category" instance.

我已在迁移中冻结了相应的架构,但这没有效果。

我使用 Django 1.4.3。

【问题讨论】:

  • 我不是 South 用户,但您可能需要发布更完整的代码才能获得好的答案。
  • 根据我目前的理解,在迁移中不可能做我想做的事。我通过管理界面触发更新方法而不是使用迁移解决了我的问题。

标签: django foreign-key-relationship django-south data-migration


【解决方案1】:

实际上,数据迁移不适合执行项目中的方法来填充数据库。 我没有编写迁移,而是编写了一个管理界面方法,允许从管理界面执行我的代码。

【讨论】:

    猜你喜欢
    • 2013-02-16
    • 2013-07-10
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 2012-07-09
    • 2020-10-30
    • 2019-02-14
    • 2023-03-17
    相关资源
    最近更新 更多