【问题标题】:Valueerror while running datamigration运行数据迁移时出现值错误
【发布时间】:2014-10-25 09:10:05
【问题描述】:

我正在为我的项目运行数据迁移。我的目标是让用户关注他在实施活动流之前创建的所有文章

我已经使用命令创建了迁移文件

python manage.py datamigration articles das_user_migrate_data --freeze auth --settings=maldio_project.settings.dev_keval 

对于转发功能,我有以下代码,

def forwards(self, orm):
        registry.register(orm['articles.article'])
        for articles in orm['articles.article'].objects.all():
            user = orm['auth.User'].objects.get(username=article.submitter.username)
            follow(user, article, actor_only=False)

我有操作所需的正确导入。但是在运行migrate 命令时出现以下错误

ValueError: Cannot assign "<User: User object>": "Follow.user" must be a "User" instance.

我看到其他问题有相同的错误,但提到的解决方案对我不起作用。

【问题讨论】:

  • 你有没有得到这个问题的答案?

标签: django django-south data-migration


【解决方案1】:

如果没有看到您的“关注”功能,我会说您尝试分配给关注对象实例的用户类与您在关注的 FK 中引用的类别不同。

确保你没有继承 Django 的用户。见django: must be a User Instance when trying to save, but it is!

【讨论】:

  • 感谢您的建议,但我没有在我的代码中扩展 auth.User 类,并且 foreign key 已正确映射到 auth.user
  • 您可能在“follow”函数中采用了 User 对象的 str 表示形式?您能否将“关注”功能的定义添加到您的问题中?
  • follow 函数是django-activity-stream 的一部分,我正在尝试将其与我的项目集成
  • 查看 django-activity-stream 的代码听起来像是在尝试创建一个 new Follow 对象指向一个 historical 用户(这就是为什么你得到“”而不是常见的用户名用户对象表示)。请参阅stackoverflow.com/questions/26542617/…您是否也尝试过冻结 django-activity-stream Follow 模型?
猜你喜欢
  • 2019-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-29
  • 2020-01-06
  • 2017-07-03
  • 2012-10-31
  • 2013-12-07
相关资源
最近更新 更多