我使用django mptt库创建如下目录层次结构:
directory_a
directory_some_name
directory_a
directory_b
directory_some_name
directory_b
directory_some_name
directory_some_name
型号.py
class BaseDirectory(MPTTModel):
name = models.CharField(_('Name'), max_length=120)
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True,
blank=True, related_name='children',
verbose_name=_('parent directory'))
def __str__(self):
return self.name
def clean(self):
# some cleaning
super().clean()
def save(self, *args, **kwargs):
self.clean()
super().save(*args, **kwargs)
class MPTTMeta:
order_insertion_by = ['name']
class Meta:
abstract = True
class OtherDirectory(BaseDirectory):
# directory model from another application
class Meta:
verbose_name = _('directory')
verbose_name_plural = _('directories')
我将这段代码部署到服务器上,它可以正常工作(所有项都插入到
字母顺序
,如果我改变它然后跑
OtherDirectory.objects.rebuild()
它返回到正常的字母顺序。
字母顺序
没用。它将新元素随机放入父树中。
我试图从我的服务器下载数据库备份并在本地还原,但如果我运行
OtherDirectory.objects.rebuild()
django mptt
包含本地计算机和服务器之间的不同数据,具有相同的数据库数据和代码,
filters
和
order_by
queryset = node.__class__._tree_manager.db_manager(
node._state.db).filter(filters).order_by(*order_by)
现在我被困住了。为什么会这样?
本地计算机:OS X Mojave。DB:postgresql 9.6.10和postgis 2.5.2、python3.7.3、django 2.1.7、django mptt 0.9.1