python - Django sorting by date(day) -


i want sort models day first , score, meaning i'd see the highest scoring articles in each day.

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) 

this answer django datetime field query - order time/hour suggests use '__day' date_modified in:

article.objects.filter().order_by('-date_modified__day', '-score') fielderror: cannot resolve keyword 'day' field. join on 'date_modified' not permitted. 

however same error in post, i'm not sure should work way.

i found other answers django order date in datetime / extract date datetime using .extra:

article.objects.filter().extra(select={"day_mod": "strftime('%d', date_modified)"}, order_by=['-day_mod', '-score']) 

this works filtering no other conditions, if apply condition on filter such category:

article.objects.filter(category = 'art').extra(select={'day_mod': "strftime('%d', date_modified)"}, order_by=['-day_mod', '-score']) 

i error:

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: number required, not unicode 

don't know what's going on here, appreciated.

from django.db.models import datetimefield django.db.models.functions import trunc  article.objects.order_by(     trunc('date_modified', 'date', output_field=datetimefield()).desc(),     '-score') 

Comments