编程语言
首页 > 编程语言> > python-model_mommy中断django-mptt

python-model_mommy中断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认为该节点已被设置.因此,将这些字段设置为“无”足以修复树更新.

我创建了一个妈妈食谱,可以在测试中的任何地方使用它,因此不必记住设置以下字段:

category_recipe = Recipe(Category, lft=None, rght=None)

然后在测试用例中:category_recipe.make()而不是mommy.make(Category).

标签:django-mptt,django-testing,python,django,model-mommy
来源: https://codeday.me/bug/20191119/2038998.html