You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模型Meta类ordering配置报错:需为元组或列表(单字段也需)

Django模型Meta类ordering配置错误修复

问题根源

你遇到的报错是因为ordering的值被解析为字符串,而非Django要求的元组或列表。如果你的代码里ordering = ('-publishDate')(末尾漏掉了逗号),Python会把括号视为优先级符号,最终ordering实际是一个字符串,触发了报错:

'ordering' must be a tuple or list (even if you want to order by only one field).

另外你的DateTimeField配置存在冗余:max_length参数仅适用于字符串类字段(如CharField),DateTimeField不需要这个参数,应该删除。

修正后的完整代码

from django.db import models
from django.utils import timezone

class Product(models.Model):
    publishDate = models.DateTimeField(default=timezone.now, verbose_name='发布时间')
    views = models.PositiveIntegerField(verbose_name='浏览量', default=0)

    class Meta:
        verbose_name = '产品'
        verbose_name_plural = '产品'
        # 写法1:带尾逗号的元组(推荐)
        ordering = ('-publishDate',)
        # 写法2:列表格式(也符合要求)
        # ordering = ['-publishDate']

核心注意事项

  • 单字段排序时,ordering必须是带尾逗号的元组或列表,不能是单个字符串。
  • 移除DateTimeField的max_length参数,避免不必要的配置警告。

内容的提问来源于stack exchange,提问作者o'o'o

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:02:37