Forum: PC-Programmierung Python / Django, Query filtern nach Monat


von Sebastian (Gast)


Lesenswert?

Hi,

kennst sich evtl. jemand mit Django aus?

Ich nutze
Django:  2.0.5
Python:  3.5.4

Ich versuche gerade eine Django Query nach letzten Monat zu Filtern.
1
def monthly_results(request):
2
    from datetime import datetime
3
    today = datetime.now()
4
    last_month = today.month - 1 if today.month > 1 else 12
5
    albums = Request_Review.objects.filter(request_date__month=last_month)
6
7
    return render(request, 'request_monthly.html', {'albums': albums,})

Allerdings bekomme ich dann diese Fehlermeldung

Exception Value: user-defined function raised exception

Habe das bereits verscuht zu googeln, allerdings finde ich nichts 
passendes :-(

Wenn ich das ohne den Filter ausführe, dann wird mir alles angezeigt. 
Nur eben alle Monate und nicht den Monat den ich möchte.
1
def monthly_results(request):
2
    from datetime import datetime
3
    today = datetime.now()
4
    last_month = today.month - 1 if today.month > 1 else 12
5
    albums = Request_Review.objects.filter()
6
7
    return render(request, 'request_monthly.html', {'albums': albums,})

von M.K. B. (mkbit)


Lesenswert?

Exception Value: user-defined function raised exception
Welche Funktion?
Welche Exception?
Wo?

Schau mal mit einem Debugger in die exception rein, vielleicht siehst du 
da die fehlenden Details. Oder du hältst mit dem Debugger an, sobald 
eine exception geworfen wird.

von Sebastian (Gast)


Lesenswert?

Also wenn ich den Filter für den Monat rausnehme, dann wird die Seite 
geladen mit sämtlichen Inhalt. Ohne den Filter (siehe oben)

Wenn ich die Ausgabe anpasse, dann wird der Filte zwar ausgeführt, aber 
mit leerem Template.

1
def monthly_results(request):
2
    from datetime import datetime
3
    today = datetime.now()
4
    last_month = today.month - 1 if today.month > 1 else 12
5
    albums = Request_Review.objects.filter(request_date__month=last_month)
6
7
    return render(request, 'request_monthly.html')

von M.K. B. (mkbit)


Lesenswert?

Vielleicht hast du meinen vorherigen Post nicht richtig verstand.

In deinem ersten Post hat du etwas von einer exception geschrieben. Ich 
finde Python hat sehr viele Informationen in einer Exception (Nachricht, 
Callstack). Sofern du uns diese Informationen vorenthältst ist alles 
andere Glaskugellesen.

von Sebastian (Gast)


Lesenswert?

Das ist die komplette Ausgabe der exception:
1
Traceback (most recent call last):
2
  File "C:\Python\Python35\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
3
    return self.cursor.execute(sql, params)
4
  File "C:\Python\Python35\lib\site-packages\django\db\backends\sqlite3\base.py", line 303, in execute
5
    return Database.Cursor.execute(self, query, params)
6
sqlite3.OperationalError: user-defined function raised exception
7
8
The above exception was the direct cause of the following exception:
9
10
Traceback (most recent call last):
11
  File "C:\Python\Python35\lib\site-packages\django\core\handlers\exception.py", line 35, in inner
12
    response = get_response(request)
13
  File "C:\Python\Python35\lib\site-packages\django\core\handlers\base.py", line 128, in _get_response
14
    response = self.process_exception_by_middleware(e, request)
15
  File "C:\Python\Python35\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
16
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
17
  File "C:\Python\Python35\lib\site-packages\django\contrib\auth\decorators.py", line 21, in _wrapped_view
18
    return view_func(request, *args, **kwargs)
19
  File "C:\Users\Sebastian Weidemann\Desktop\wi-zlatan-master\analysis\views.py", line 1408, in monthly_results
20
    return render(request, 'request_monthly.html', {'albums': albums,})
21
  File "C:\Python\Python35\lib\site-packages\django\shortcuts.py", line 36, in render
22
    content = loader.render_to_string(template_name, context, request, using=using)
23
  File "C:\Python\Python35\lib\site-packages\django\template\loader.py", line 62, in render_to_string
24
    return template.render(context, request)
25
  File "C:\Python\Python35\lib\site-packages\django\template\backends\django.py", line 61, in render
26
    return self.template.render(context)
27
  File "C:\Python\Python35\lib\site-packages\django\template\base.py", line 175, in render
28
    return self._render(context)
29
  File "C:\Python\Python35\lib\site-packages\django\template\base.py", line 167, in _render
30
    return self.nodelist.render(context)
31
  File "C:\Python\Python35\lib\site-packages\django\template\base.py", line 943, in render
32
    bit = node.render_annotated(context)
33
  File "C:\Python\Python35\lib\site-packages\django\template\base.py", line 910, in render_annotated
34
    return self.render(context)
35
  File "C:\Python\Python35\lib\site-packages\django\template\loader_tags.py", line 155, in render
36
    return compiled_parent._render(context)
37
  File "C:\Python\Python35\lib\site-packages\django\template\base.py", line 167, in _render
38
    return self.nodelist.render(context)
39
  File "C:\Python\Python35\lib\site-packages\django\template\base.py", line 943, in render
40
    bit = node.render_annotated(context)
41
  File "C:\Python\Python35\lib\site-packages\django\template\base.py", line 910, in render_annotated
42
    return self.render(context)
43
  File "C:\Python\Python35\lib\site-packages\django\template\loader_tags.py", line 67, in render
44
    result = block.nodelist.render(context)
45
  File "C:\Python\Python35\lib\site-packages\django\template\base.py", line 943, in render
46
    bit = node.render_annotated(context)
47
  File "C:\Python\Python35\lib\site-packages\django\template\base.py", line 910, in render_annotated
48
    return self.render(context)
49
  File "C:\Python\Python35\lib\site-packages\django\template\defaulttags.py", line 314, in render
50
    return nodelist.render(context)
51
  File "C:\Python\Python35\lib\site-packages\django\template\base.py", line 943, in render
52
    bit = node.render_annotated(context)
53
  File "C:\Python\Python35\lib\site-packages\django\template\base.py", line 910, in render_annotated
54
    return self.render(context)
55
  File "C:\Python\Python35\lib\site-packages\django\template\defaulttags.py", line 313, in render
56
    if match:
57
  File "C:\Python\Python35\lib\site-packages\django\db\models\query.py", line 276, in __bool__
58
    self._fetch_all()
59
  File "C:\Python\Python35\lib\site-packages\django\db\models\query.py", line 1179, in _fetch_all
60
    self._result_cache = list(self._iterable_class(self))
61
  File "C:\Python\Python35\lib\site-packages\django\db\models\query.py", line 53, in __iter__
62
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
63
  File "C:\Python\Python35\lib\site-packages\django\db\models\sql\compiler.py", line 1066, in execute_sql
64
    cursor.execute(sql, params)
65
  File "C:\Python\Python35\lib\site-packages\django\db\backends\utils.py", line 100, in execute
66
    return super().execute(sql, params)
67
  File "C:\Python\Python35\lib\site-packages\django\db\backends\utils.py", line 68, in execute
68
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
69
  File "C:\Python\Python35\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
70
    return executor(sql, params, many, context)
71
  File "C:\Python\Python35\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
72
    return self.cursor.execute(sql, params)
73
  File "C:\Python\Python35\lib\site-packages\django\db\utils.py", line 89, in __exit__
74
    raise dj_exc_value.with_traceback(traceback) from exc_value
75
  File "C:\Python\Python35\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
76
    return self.cursor.execute(sql, params)
77
  File "C:\Python\Python35\lib\site-packages\django\db\backends\sqlite3\base.py", line 303, in execute
78
    return Database.Cursor.execute(self, query, params)
79
django.db.utils.OperationalError: user-defined function raised exception

von M.K. B. (mkbit)


Lesenswert?

Es sieht so aus, als ob das irgendwas bei sqlite intern schiefläuft.
Schalte mal auf deiner sqlite connection das logging an.
1
connection.set_trace_callback(print)
Interessant wäre dann der letzte Befehl. Daraus kann man vielleicht 
schließen, was schief läuft.

von Sheeva P. (sheevaplug)


Lesenswert?

Sebastian schrieb:
> kennst sich evtl. jemand mit Django aus?

Hab' zwar lange nichts mehr mit Django gemacht, aber auf den ersten 
Blick sieht Dein Code korrekt aus.

> Ich versuche gerade eine Django Query nach letzten Monat zu Filtern.

Magst Du uns vielleicht Dein Model der Tabelle Request_Review zeigen?

von Sebastian (Gast)


Lesenswert?

Habe den Fehler gefunden.

Das Datenbankfeld request_date war ursprünglich ein CharField und wurde 
später in DateTimeField umgeändert. Alle Einträge die vorher dort 
eingetragen wurden sind "kaputt". Wenn ich die Datenbank dupliziere und 
die alten Einträge lösche, dann geht das skript wie gewünscht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.