【问题标题】:model_mommy breaks django-mpttmodel_mommy 打破 django-mptt
【发布时间】:2015-08-28 08:54:40
【问题描述】:

我在测试中使用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_idlftrghtlevel提供了随机值,这些是必填字段,但应该由MPTT处理。

有没有办法告诉模特妈妈根本不要填写这些字段?还是这些字段的默认值不会破坏 MPTT 的保存算法?

【问题讨论】:

    标签: python django django-testing django-mptt model-mommy


    【解决方案1】:

    事实证明,如果lftrght 具有真值,MPTTModel.save 认为节点已经设置。因此将这些字段设置为None 足以修复树更新。

    我创建了一个妈妈食谱,在我的测试中随处使用,所以我不必记住设置这些字段:

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

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

    【讨论】:

      猜你喜欢
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 2012-09-27
      • 2012-07-15
      • 2019-01-05
      相关资源
      最近更新 更多