我们正在使用Django。
我们有一个模型对象Story,其中N Section对象按自定义字段“index”排序。这在数据库中反映为具有“索引”列和“story_id”列的Section表。
当添加新的部分时,我们只使用一个新的“索引”来创建它。
到目前为止一切顺利。
问题是:我们要插入一个将在两个已存在的部分之间排序的部分。如何有效地添加一个新的Section条目,但使它在两个索引之间定位?
假设我们有一个id为A且索引为1的Section,以及一个id为B且索引为2的Section。 我想添加一个Section id C但索引在1和2之间,以确保它在A和B之间。
我们设想的解决方案:
如何做到这一点好方法?
答案 0 :(得分:0)
对于选项#1,以下是多么低效?
from django.db.models import F
section = Section.objects.create(...)
Section.objects.filter(
index__gte=section.index,
#...
).exclude(pk=section.pk).update(index=F('index') + 1)