【问题标题】:(Django) Order by desc(Django) 按 desc 排序
【发布时间】:2017-08-09 11:40:07
【问题描述】:

我无法订购我的新闻表。我想我做的一切都是对的,但 django 显示错误!请检查我的代码可能有问题

class News(models.Model):
news_title = models.CharField(max_length=255)
news_text = models.TextField(max_length=1000)
news_logo = models.ImageField(upload_to='uimages')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)

class Meta:
    verbose_name = 'News'
    verbose_name_plural = 'News'
    **News.objects.filter().order_by('-created_at')**

【问题讨论】:

  • 错误是什么?
  • NameError: 名称“新闻”未定义
  • 如果您想更改默认对象管理器的默认顺序,请查看here
  • 这一行在 Meta 类中有什么作用? **News.objects.filter().order_by('-created_at')**

标签: python django


【解决方案1】:

您的代码或至少在您发布的示例中存在一些缩进问题。代码 sn-p 应缩进如下:

class News(models.Model):
    news_title = models.CharField(max_length=255)
    news_text = models.TextField(max_length=1000)
    news_logo = models.ImageField(upload_to='uimages')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name = 'News'
        verbose_name_plural = 'News'

具体来说,Meta 类需要是News 类的一部分。

在更改默认顺序方面,正如一些 cmets 已经指出的那样,正确的方法是在 Meta 类中使用 ordering 属性。如果你总是想按created_at 降序排列,你需要定义如下类:

class News(models.Model):
    news_title = models.CharField(max_length=255)
    news_text = models.TextField(max_length=1000)
    news_logo = models.ImageField(upload_to='uimages')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name = 'News'
        verbose_name_plural = 'News'
        ordering = ['-created_at']

您可以在Django documentation 中找到有关模型选项的更多信息。

【讨论】:

  • 谢谢!我是 Django 的新手,所以我有这个错误
  • 没问题,乐于助人。这就是我们所有人的学习方式:)
【解决方案2】:

你为什么要把这个查询放在 Meta 类中?听起来你想达到default order as shown in this Django doc。在这种情况下,您无需在此处进行查询,只需设置 order 属性:

class Meta:
    verbose_name = 'News'
    verbose_name_plural = 'News'
    # this line:
    ordering = ['-created_at']

【讨论】:

    猜你喜欢
    • 2016-06-07
    • 2023-04-06
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    相关资源
    最近更新 更多