【发布时间】: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