Thanks for the tip, but besides defining the type of the output it is unclear how this can be used to perform a date difference operation.
What I would need is to convert timezone.now() into a date constant that can be understood by the database, whatever the database is. If I leave it as it is, I get the str() conversion, which is meaningless for the database. Even if I find some format dd-mm-yyyy that works with a given database, I wouldn't be sure that it works with other databases. I need the ORM to perform the conversion Date Object -> Database date constant.
Then comes the date difference operation. Same thing: either the database understands the minus sign with date format, or it doesn't and need some DATEDIFF operator. Again I would need the ORM to explicitly set the right operator.
My guess at the moment is that this cannot be achieved with Django ORM. I may apply the dict method and work with the dictionary instead, so that I can add custom fields more easily.
Yoann
Le dimanche 31 juillet 2016 09:25:58 UTC+2, Constantine Covtushenko a écrit :
-- What I would need is to convert timezone.now() into a date constant that can be understood by the database, whatever the database is. If I leave it as it is, I get the str() conversion, which is meaningless for the database. Even if I find some format dd-mm-yyyy that works with a given database, I wouldn't be sure that it works with other databases. I need the ORM to perform the conversion Date Object -> Database date constant.
Then comes the date difference operation. Same thing: either the database understands the minus sign with date format, or it doesn't and need some DATEDIFF operator. Again I would need the ORM to explicitly set the right operator.
My guess at the moment is that this cannot be achieved with Django ORM. I may apply the dict method and work with the dictionary instead, so that I can add custom fields more easily.
Yoann
Le dimanche 31 juillet 2016 09:25:58 UTC+2, Constantine Covtushenko a écrit :
Hi Yoann,I am not sure exactly but believes you are on the right way.Try improve your expression with ExpressionWrapper, as said here.Probably the problem is that you use values of different types in your expression.RegardsOn Sat, Jul 30, 2016 at 11:35 PM, Yoann Duriaud <yoann....@gmail.com> wrote:Hello,--
I would like to annotate a query with the following expression: ([Due Date] - [Now])/[Interval]. [Due Date] and [Interval] are fields from the database, while [Now] should be "equal" to timezone.now().
So this would look like:
.annotate(ratio=(F('due_date')-timezone.now())/F('Interval') )
but this does not work. Does someone know how the expression should be written (if it is indeed feasible with Django ORM)?
Thanks for your help!
Yoann
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com .
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users .
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/03dedd39- .142f-468a-b6fd-b7ec551862e8% 40googlegroups.com
For more options, visit https://groups.google.com/d/optout .
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/60119a06-5b1f-4e23-a142-627c65f14017%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment