gpt4 book ai didi

python - 将 Django 字母顺序更改为自定义顺序

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

我创建了一个模型Reservation,我的代码(models.py)如下所示:

#Choices
STATUS_CHOICES = ( ('APPROVED','Approved'),('PENDING', 'Pending'), ('CANCELED', 'Canceled') )

# Reservation model
class Reservation(models.Model):

class Meta:
ordering = ['-status']

status = models.CharField(choices=STATUS_CHOICES, default='PENDING', max_length=25)

我想这样订购我的预订:

  1. 待处理
  2. 已批准
  3. 已取消

但我当前的订单是:

  1. 待处理
  2. 已取消
  3. 已批准

看起来 Django 正在按字母顺序对我的对象进行排序。

如何将字母顺序更改为上述顺序?

谢谢!

最佳答案

您可以将状态更改为IntegerField,并为这三种状态定义常量。然后按“状态”排序应该可以满足您的要求。

PENDING = 1
APPROVED = 2
CANCELED = 3

STATUS_CHOICES = (APPROVED,'Approved'),(PENDING, 'Pending'), (CANCELED, 'Canceled))

或者您可以创建一个带有字段 sort_orderStatusChoice 模型。将 Reservation.status 设置为新模型的外键,并按 status__sort_order 排序。

另一个选项是使用 extra() 中的 order_by 参数在 SQL 中进行排序。 .

关于python - 将 Django 字母顺序更改为自定义顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29087641/

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