gpt4 book ai didi

python - 使用字段排序 mptt 树

转载 作者:太空宇宙 更新时间:2023-11-03 18:40:40 27 4
gpt4 key购买 nike

这是原始的类别模型:

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

def __unicode__(self):
return self.name

class MPTTMeta:
order_insertion_by = ['name']

然后我需要订购类别,所以我将其更改如下:

class Category(MPTTModel):
name = models.CharField(max_length=50, unique=True)
order = models.SmallIntegerField() <<<<<<<<<
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')

def __unicode__(self):
return self.name

class MPTTMeta:
order_insertion_by = ['order'] <<<<<<<<<

我将 Django 管理声明更改为:

admin.site.register(Category, MPTTModelAdmin)

致:

class CategoryAdmin(MPTTModelAdmin):
list_display = ('name', 'order')
list_editable = ('order',)


admin.site.register(Category, CategoryAdmin)

然后,在管理控制面板进行一些编辑后,一切都崩溃了。我无法准确描述发生了什么,但似乎 lftrghtlevelparent_id 搞砸了通过这些变化。

我是否在错误的上下文中使用了 order_insertion_by ?是为了别的事吗?我尝试搜索文档但没有得到有用的答案。

最佳答案

我遇到了这个问题。问题不在 django-mptt 包中,而在 Django 框架中,更准确地说是在管理中。也许这是由于多个管理员同时工作造成的。虽然只有一种解决方案 - 放弃 list_editable 在管理类中或编写具有相同字段order的脚本 Ajax 。

为了恢复树,请使用 rebuld方法:Category.tree.rebuild()

关于python - 使用字段排序 mptt 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20578704/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com