Django:存储分层数据

标签 django model tree sqlobject

我正在尝试将文档的各个部分存储在 Django 应用程序中。该模型如下所示:

class Section(models.Model):
  project = models.ForeignKey(Project)
  parent_section = models.ForeignKey('Section', blank=True, null=True, related_name='child_set')
  predecessor_section = models.ForeignKey('Section', blank=True, null=True, related_name='predecessor_set')
  name = models.CharField(max_length=100)
  text = models.TextField(blank=True, null=True)

我创建了很多部分,链接它们(parent_section、predecessor_section)并通过调用它们的每个保存方法来存储它们。但是,当我保存后查看表时,parent_section_id 和 previous_section_id 未设置,即使我在保存之前附加了对象。

我认为这与某些parent_section实例没有分配id有关,因为它们的实例尚未存储,但使用手动事务无法解决问题。

对此有什么想法吗?

干杯, 最大

最佳答案

在将对象保存到 Django ORM 中之前,对象没有 ID。

所以我想说你需要 save() 对象,然后在父/子部分中引用它(并重新保存这些部分)。

但是,将 prec 和 next 作为指针存储的另一种选择是存储equence_index(间隔 10 以允许进一步插入而无需重新排序)并按此索引进行排序。

关于Django:存储分层数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3362438/

相关文章:

python - 如何更新 django Rest 框架中的 self.request.user 字段?

python - Django 外部库和应用名称冲突

django - 错误 : Command "python setup.py egg_info" failed with error code 1 in/tmp/pip-install-YYFUnW/psycopg2/

php - CakePHP 关联模型返回 null?

php - 您可以在 CodeIgniter 中从另一个模型内部访问一个模型吗?

design-patterns - 并行实现树遍历算法的策略?

python - Django: 'module' 对象没有属性 'ChoiceField' , 'MultipleChoiceField'

iphone - 如何通过代码查找iPhone/iPod设备型号(3G、3GS、4、4S)?

sql - 在邻接表模型中克隆树的数据库表示的最有效方法

javascript - 尝试递归循环树时遇到问题