Django mptt数据库迁移错误

时间:2015-05-26 21:28:40

标签: python django django-mptt mptt

即时尝试使用我当前的项目,但遇到数据库迁移问题。

这是我的模特

from django.db import models
from mptt.models import MPTTModel, TreeForeignKey

class Section(MPTTModel):
    name = models.CharField(max_length=50, unique=True)
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)

    class MPTTMeta:
        order_insertion_by = ['name']

我在命令行中运行它:

sudo python manage.py makemigrations core

但似乎得到了与级别字段相关的错误

You are trying to add a non-nullable field 'level' to section without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows)
 2) Quit, and let me add a default in models.py
Select an option:

我该怎么办?

1 个答案:

答案 0 :(得分:3)

'Level'由MPTTModel自动添加,以表示树中特定节点的“深度”。如果尚未创建树结构,则可以安全地选择选项1并将所有内容默认为级别0(根)。如果您还没有设置树结构,这应该没问题,并且应该在您稍后使用树时进行调整。

如果您已经考虑了树结构并且需要在数据中反映出来,那么您仍然需要执行此操作,但是您需要使用(可能是手写的)data migration来设置它正确的价值观。