使用拖放对模型中的条目重新排序
时间:2020-03-06 14:30:15 来源:igfitidea点击:
假设我在Django中有一个博客应用。如何使用默认管理员中的可拖动表格对帖子重新排序?
如果我不必在模型中添加任何额外的字段,那将是最好的选择,但是如果我确实必须这样做的话。
解决方案
在模型类中,我们可能必须添加" order"字段以维护特定的订单(例如,order = 10的项目是最后一个,order = 1是第一个)。然后,我们可以在admin change_list模板中添加JS代码(请参见此模板)以维护拖放功能。最后,将模型的Meta中的顺序更改为['order']。
注意:"如果我不必在模型中添加任何额外字段,那是最好的,但如果确实需要,我可以。"
抱歉,数据库中信息的顺序由信息本身决定:我们总是必须添加一列以进行排序。真的没有选择。
此外,要按此顺序检索内容,我们需要在查询中专门添加.order_by(x)
或者在模型中添加ordering
。
class InOrder( models.Model ): position = models.IntegerField() data = models.TextField() class Meta: ordering = [ 'position' ]
没有添加的字段排序就不会发生。这是关系数据库的规则之一。
有关执行此操作的工作代码,请访问djangosnippets.org中的代码片段1053.