【问题标题】:South Auto-migrate Adding Erroneous Unique ConstraintSouth Auto-migrate 添加错误的唯一约束
【发布时间】:2013-07-26 20:33:06
【问题描述】:

我的一个模型中有以下代码:

channel = models.OneToOneField(Channel, related_name='stories', null=True, blank=True, unique=False)

看到unique=False了吗?好吧,当我使用 south 创建自动迁移时,它想添加一个唯一约束:

./manage.py schemamigration core --auto
 ~ Changed field channel on core.Story
 + Added unique constraint for ['channel'] on core.Story

什么给了!?

【问题讨论】:

    标签: django django-models django-south


    【解决方案1】:

    这是 Django,而不是 South。成为unique 内置于OneToOneField 的定义中。 (可以看源码here。)

    如果 unique 为 False,则可以有多个 Story 具有相同的 Channel。这是一个多对一关系,因此您可能希望这是一个 ForeignKey 字段。

    【讨论】:

    • 新问题:我将字段更改为 ForeignKey,现在我从南方收到此错误:The field 'Story.channel' does not have a default specified, yet is NOT NULL。如果我有null=True,为什么会这样说?
    • 我的猜测是 South 在尝试更改字段类型时遇到了问题。作为测试,尝试添加一个具有相同参数的 new 字段,看看是否有错误。
    猜你喜欢
    • 2018-11-24
    • 2016-06-27
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多