django mysql 时间排序_Django按日期排序(天)

我想先按天排序,然后按分数排序,这意味着我希望看到每天得分最高的文章。在class Article(models.Model):

date_modified = models.DateTimeField(blank=True, null=True)

score = models.DecimalField(max_digits=5, decimal_places=3, blank=True, null=True)

然而,我得到了与帖子中相同的错误,所以我甚至不确定它是否应该这样工作。在Article.objects.filter().extra(select={"day_mod": "strftime('%d', date_modified)"}, order_by=['-day_mod', '-score'])

这适用于没有其他条件的过滤,但是如果我对过滤器应用条件,如类别:Article.objects.filter(category = 'Art').extra(select={'day_mod': "strftime('%d', date_modified)"}, order_by=['-day_mod', '-score'])

我得到这个错误:File "/home/mykolas/anaconda2/lib/python2.7/site-packages/IPython/core/formatters.py", line 699, in __call__

printer.pretty(obj)

File "/home/mykolas/anaconda2/lib/python2.7/site-packages/IPython/lib/pretty.py", line 383, in pretty

return _default_pprint(obj, self, cycle)

File "/home/mykolas/anaconda2/lib/python2.7/site-packages/IPython/lib/pretty.py", line 503, in _default_pprint

_repr_pprint(obj, p, cycle)

File "/home/mykolas/anaconda2/lib/python2.7/site-packages/IPython/lib/pretty.py", line 694, in _repr_pprint

output = repr(obj)

File "/home/mykolas/lenv/lib/python2.7/site-packages/django/db/models/query.py", line 234, in __repr__

data = list(self[:REPR_OUTPUT_SIZE + 1])

File "/home/mykolas/lenv/lib/python2.7/site-packages/django/db/models/query.py", line 258, in __iter__

self._fetch_all()

File "/home/mykolas/lenv/lib/python2.7/site-packages/django/db/models/query.py", line 1074, in _fetch_all

self._result_cache = list(self.iterator())

File "/home/mykolas/lenv/lib/python2.7/site-packages/django/db/models/query.py", line 52, in __iter__

results = compiler.execute_sql()

File "/home/mykolas/lenv/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 848, in execute_sql

cursor.execute(sql, params)

File "/home/mykolas/lenv/lib/python2.7/site-packages/django/db/backends/utils.py", line 83, in execute

sql = self.db.ops.last_executed_query(self.cursor, sql, params)

File "/home/mykolas/lenv/lib/python2.7/site-packages/django/db/backends/sqlite3/operations.py", line 146, in last_executed_query

return sql % params

TypeError: %d format: a number is required, not unicode

不知道这里发生了什么事,希望你能帮忙。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来回答您的问题。 首先,Django 是一个流行的 Python Web 框架,它提供了许多强大的功能,其中之一就是 ORM(对象关系映射)。 ORM 允许您使用 Python 对象来处理数据库操作,而不是直接编写 SQL 语句。这样做有很多好处,比如更容易维护和更易于理解。 下面是一些基本的 ORM 操作,用于在 Django 中执行增删改操作。 首先,要使用 ORM,您需要在您的 Django 项目中创建一个模型。模型是一个 Python 类,它代表了数据库中的一个表。 例如,这是一个简单的模型类,它代表了一个名为 `Book` 的表: ``` from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=100) published_date = models.DateField() ``` 接下来,我们可以使用以下代码将一个新的 `Book` 对象插入到数据库中: ``` book = Book(title='Django for Beginners', author='William Vincent', published_date='2021-01-01') book.save() ``` 我们可以使用以下代码来更新一个现有的 `Book` 对象: ``` book = Book.objects.get(title='Django for Beginners') book.author = 'William S. Vincent' book.save() ``` 最后,我们可以使用以下代码来删除一个 `Book` 对象: ``` book = Book.objects.get(title='Django for Beginners') book.delete() ``` 这些是最基本的 ORM 操作,但是 Django ORM 还提供了许多其他的高级功能,比如过滤、排序和聚合查询等。如果您想了解更多信息,请查看 Django 的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值