django-mptt引发' NoneType'对象没有属性' tree_id'保存节点时

时间:2016-07-20 14:33:40

标签: python django django-mptt

screen shot 2016-07-20 at 17 06 39

环境:python 2.7.10,Django 1.9.1,django-mptt 0.8.4

# models.py
class Foo(MPTTModel):
    parent = TreeForeignKey('self', null=True, blank=True)

错误提升:

getattr(self, opts.tree_id_attr) != getattr(parent, opts.tree_id_attr)

其中父级是None,因为:

1)link

opts.set_raw_field_value(self, opts.parent_attr, old_parent_id) # old_parent_id is None

2)link

parent = getattr(self, opts.parent_attr)

set_raw_field_value source:

def set_raw_field_value(self, instance, field_name, value):
    field = instance._meta.get_field(field_name)
    setattr(instance, field.attname, value)

帮助我理解这种行为。为什么它不足以通过self.parent_id设置关系?

1 个答案:

答案 0 :(得分:0)

  

似乎设置parent_id不会以任何方式重置父级,   RESP。不会因为数据库而动态加载父级   底层的id字段有一些价值。

https://github.com/django-mptt/django-mptt/issues/428