[英]model_mommy breaks django-mptt
我使用model_mommy
创建的实例MPTTModel
在我的测试,但看起来它打破了由MPTT管理树:
>>> parent = mommy.make(Category)
>>> child = mommy.make(Category, parent=parent)
>>> parent.get_descendants()
[]
不使用model_mommy的相同工作原理:
>>> parent = Category(name=u'Parent')
>>> parent.save()
>>> child = Category(name=u'Child', parent=parent)
>>> child.save()
>>> parent.get_descendants()
[<Category: Child>]
我怀疑问题是model_mommy为tree_id
, lft
, rght
和level
提供随机值,这些是必填字段,但应由MPTT处理。
有没有办法告诉模特妈妈根本不填写这些字段? 或者这些字段的默认值是否会破坏MPTT的保存算法?
事实证明,如果lft
或rght
具有真值,则MPTTModel.save
认为该节点已经设置好。 因此,将这些字段设置为None
足以修复树更新。
我创建了一个我在测试中随处可见的妈妈食谱,所以我不必记得设置这些字段:
category_recipe = Recipe(Category, lft=None, rght=None)
然后在测试用例中: category_recipe.make()
而不是mommy.make(Category)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.