Ich möchte die Modelle zuerst nach Tag und dann nach Punkte sortieren, was bedeutet, dass ich die Artikel mit den höchsten Punktzahlen an jedem Tag sehen möchte.Django Sortierung nach Datum (Tag)
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)
Diese Antwort Django Datetime Field Query - Order by Time/Hour schlägt vor, dass ich mit meiner '__day'
date_modified
wie in:
Article.objects.filter().order_by('-date_modified__day', '-score')
FieldError: Cannot resolve keyword 'day' into field. Join on 'date_modified' not permitted.
Jedoch habe ich den gleichen Fehler wie in der Post bekommen, so dass ich bin mir nicht einmal sicher, ob es das funktionieren sollte Weg.
fand ich andere Antworten django order by date in datetime/extract date from datetime.extra
mit:
Article.objects.filter().extra(select={"day_mod": "strftime('%d', date_modified)"}, order_by=['-day_mod', '-score'])
Diese zum Filtern ohne andere Bedingungen funktioniert, aber wenn ich einen Zustand auf dem Filter wie zum Beispiel eine Kategorie gelten:
Article.objects.filter(category = 'Art').extra(select={'day_mod': "strftime('%d', date_modified)"}, order_by=['-day_mod', '-score'])
I Erhalten Sie diesen Fehler:
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
Ich weiß nicht wirklich wha Es geht hier weiter, Hilfe wäre willkommen.
Danke funktioniert wie vorgesehen. Perfektes Timing für Django 1.10 :) – Xlrv