在Django中实现订购项目

时间:2018-02-04 20:22:52

标签: python django database postgresql

假设,我想构建一个简单的TODO-app。我想创建待办事项,也可以手动重新排列项目。

我做了以下模型:

class Item(models.Model):
    title = models.CharField(max_length=500)

现在,我需要添加一个特殊字段,让我们称之为order,以保持自定义排序。它应该是唯一的,对于任何新记录都应该更大,所以我尝试制作AutoField

class Item(models.Model):
    title = models.CharField(max_length=500)
    order = models.AutoField(primary_key=False)

但事实证明,Django并不支持单个模型的几个自动字段。

我想,应该可以编写自定义原始SQL代码并直接使用Postgres序列,但它看起来真的很难看,而且我不想为这种简单的功能编写特定于DB的代码。

所以,这是一个问题:在Django中实现项目排序的常用方法是什么?这听起来是一个非常普遍的要求,而且,我认为应该是一种简单的方法。

2 个答案:

答案 0 :(得分:1)

事实证明,在Django中没有直接的方法来实现它。有一些软件包可以帮助您,例如this one

但我建议只看他们的模型实现并满足您的需求。 models.py

答案 1 :(得分:0)

您可以使用Item.objects.count()自动增加字段。将其插入模型的save()方法,以便每次创建实例时计算字段。