gpt4 book ai didi

django - 使用South freeze orm时南数据迁移 'instance'错误

转载 作者:行者123 更新时间:2023-12-03 11:53:39 27 4
gpt4 key购买 nike

我有一个南数据迁移,它试图根据在其他模型中找到的数据创建新对象。尝试为给定的“目标”模型创建新对象时,我不断收到:

Cannot assign "<ContentType: ContentType object>": "Publishing.content_type" must be a "ContentType" instance.

通过 South freeze ORM 访问时,“实例”似乎有问题,例如:
ContentType = orm['contenttypes.ContentType']
content_type_kwargs = {
'model': ContentModel._meta.module_name,
'app_label': ContentModel._meta.app_label, }
content_type = ContentType.objects.get(**content_type_kwargs)

# further down

publishing_kwargs = {
'site': Site.objects.get_current(),
'publishing_type': publishing_type,
'start': start,
'content_type': content_type,
'object_id': content_object.id, }

publishing = orm.Publishing(**publishing_kwargs) # Produces the error above

现在我已经多次验证 content_type实际上是 ContentType 的一个实例——但不知何故 django 不这么认为。
  • 实例的“卡住”、南 orm 版本和本地 django 版本之间有区别吗?
  • 这还可能是什么?
  • 最佳答案

    这是因为 South 处理模型的方式。您必须卡住在迁移中需要使用的任何模型。迁移所在应用程序中的模型会自动卡住;您必须手动卡住的其他任何内容:

    python manage.py schemamigration --auto yourapp --freeze contenttypes

    如果您有多个应用程序需要卡住,请重复 --freeze根据需要多次争论:
    python manage.py schemamigration --auto yourapp --freeze contenttypes --freeze someotherapp ...

    另一件事。当您访问这些额外的卡住模型时,您必须使用旧式 South API:
    orm['contenttypes.contenttype'].objects.all()

    类似 orm.ContentType不会工作。

    关于django - 使用South freeze orm时南数据迁移 'instance'错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6211027/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com