>
> As committed, the expressions framework is fairly dumb - it is really
> just a way to do two things:
>  1) Expand Django-style field references into column names (and joins
> if required)
>  2) Turn Python expression trees into SQL expression trees.
>
> This means that the operations that are allowed depend somewhat on the
> database in use. For example, on MySQL, you can perform mod operations
> on floats; under Postgres, you can't.
>
> Constants in expressions are rendered as-is, so whether dates are
> allowed depends on what your database allows. From some quick tests,
> date + integer works on SQLite and MySQL -- or, at least, doesn't
> throw an error. I haven't confirmed that the answer it gives is
> actually meaningful. Postgres complains with an error "operator does
> not exist: timestamp with time zone + integer".
>
> However, I'm certainly interested in entertaining any modification to
> support more interesting expressions - for example, converting the
> expression "F('date') + timedelta(days=3)" into meaningful SQL.
> Patches welcome.

I will have a look at how expressions are implemented (I am aware of
the patches philosophy).

It seems though that the different backends will certainly need
different handlings:

I think

filter(enddate__gt=F('startdate')+timedelta(days=3))

will need to become in SQLITE:

where enddate > date(startdate, "3 days")

and in Postgres:

where enddate > (startdate + interval '3 days')

Koen

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to