gpt4 book ai didi

Django:如何创建有序的 sibling

转载 作者:行者123 更新时间:2023-12-01 12:54:00 25 4
gpt4 key购买 nike

我想创建一个模型,它将以适当的方式对其子模型进行排序。例如,一本书有很多章节,但章节必须按特定顺序排列。

我假设我需要在 Chapter 模型上放置一个 IntegerField 来指定 Chapter 的顺序,如以下问题所示:Ordered lists in django

我的主要问题是,每当我想在两个现有章节之间插入一个新章节或以任何方式重新排列它们时,我都必须(几乎)更新书中的每一章。有没有办法(也许在我正在使用的 Django Admin 中)避免每次更改顺序时都必须手动更改每一章的每个索引?

我不太喜欢创建上述链接问题中提出的“链接列表”样式模型,因为我觉得这不是创建数据库的好习惯。

为这种关系建模的“正确”方法是什么?

最佳答案

您提到的答案可能是有效处理此问题的最佳方式。可能需要原始 SQL 语句 UPDATE Chapter SET order = order + 1 WHERE book_id = <id_for_book> AND order <= <insert_index_location> . 对于 Django 1.1+:您可以使用 F()将其写在一行中,如下所示,但它可能仍然是使用事务的 O(n) 查询。

Book.objects.get(id=<id_of_book>).chapter_set.filter(order__gt=<place_to_insert>).update(order=F('order')+1)

关于Django:如何创建有序的 sibling ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10689317/

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