Mijn vraag
Hallo,
Iets wat mij zeer eenvoudig leek om te doen zorgt op dit moment voor wat frustratie. Ik heb een model in Django dat heel eenvoudig is:
Graag had ik eenvoudig alle waardes tot en met 31-03-2023 verkregen. Ik gebruik hiervoor volgende code:
Jammer genoeg krijg ik alle waarde die lager zijn maar niet gelijk zijn aan deze datum. Dit zijn de waarde in de databank:
De waarde die ik terugkrijg bij de "Q1" query is de volgende, terwijl er een record is met de overeenstemmend datum met memo Q1 die niet tevoorschijn komt:
Relevante software en hardware die ik gebruik
Ubuntu 22.04.3
Maria DB 10.6.16
Django 4.2.2.
Wat ik al gevonden of geprobeerd heb
Ik heb geprobeerd in Django zelf meerdere malen de query te herschrijven maar ik vind het maar niet logisch dat wanneer ik een record met datum 2023-03-31 heb staan deze met een lte query niet wil tevoorschijn komen wanneer de datum exact een match is. Ik ben overgestapt naar de Django shell maar daar bleek het nogmaals duidelijk dat de query niet werkt. Ik dacht eerst dat het zou liggen aan het datatype datetime vs date. Maar wanneer ik netjes de conversie doe via date() dan lukt dit ook niet. Ik heb ook geprobeerd om de "__date" filter toe te voegen maar dan krijg ik een lege lijst aan resultaten.
Dank alvast voor een tip in de juiste richting!
Hallo,
Iets wat mij zeer eenvoudig leek om te doen zorgt op dit moment voor wat frustratie. Ik heb een model in Django dat heel eenvoudig is:
code:
1
2
3
4
| class Beweging (models.Model): datum = models.DateTimeField(auto_now_add=True) waarde= MoneyField(max_digits=65, decimal_places=2, default_currency='EUR') memo = models.CharField(max_length=500) |
Graag had ik eenvoudig alle waardes tot en met 31-03-2023 verkregen. Ik gebruik hiervoor volgende code:
code:
1
| Q1 = Beweging.objects.filter(rekening=afdeling.rekening,datum__lte=datetime.date(2023,3,31)) |
Jammer genoeg krijg ik alle waarde die lager zijn maar niet gelijk zijn aan deze datum. Dit zijn de waarde in de databank:
code:
1
2
3
4
5
6
| | 655 | 2023-03-31 00:00:00.000000 | Q1 | Startbedrag | 400.00 | 81 | EUR | | 656 | 2023-06-30 00:00:00.000000 | Q2 | Startbedrag | 300.00 | 81 | EUR | | 657 | 2023-09-30 00:00:00.000000 | Q3 | Startbedrag | 200.00 | 81 | EUR | | 658 | 2023-12-31 00:00:00.000000 | Q4 | Startbedrag | 100.00 | 81 | EUR | | 659 | 2022-12-31 00:00:00.000000 | ouder | Startbedrag | 500.00 | 81 | EUR | | 660 | 2012-12-31 00:00:00.000000 | ouder | Startbedrag | 600.00 | 81 | EUR |
De waarde die ik terugkrijg bij de "Q1" query is de volgende, terwijl er een record is met de overeenstemmend datum met memo Q1 die niet tevoorschijn komt:
code:
1
2
| In [123]: Q1 Out[123]: <QuerySet [<Beweging: ouder>, <Beweging: ouder>]> |
Relevante software en hardware die ik gebruik
Ubuntu 22.04.3
Maria DB 10.6.16
Django 4.2.2.
Wat ik al gevonden of geprobeerd heb
Ik heb geprobeerd in Django zelf meerdere malen de query te herschrijven maar ik vind het maar niet logisch dat wanneer ik een record met datum 2023-03-31 heb staan deze met een lte query niet wil tevoorschijn komen wanneer de datum exact een match is. Ik ben overgestapt naar de Django shell maar daar bleek het nogmaals duidelijk dat de query niet werkt. Ik dacht eerst dat het zou liggen aan het datatype datetime vs date. Maar wanneer ik netjes de conversie doe via date() dan lukt dit ook niet. Ik heb ook geprobeerd om de "__date" filter toe te voegen maar dan krijg ik een lege lijst aan resultaten.
code:
1
| Q1 = Beweging.objects.filter(rekening=afdeling.rekening,datum__date__lte=datetime.date(2023,3,31)) |
Dank alvast voor een tip in de juiste richting!