App Engine GQL:查询日期范围

Jer*_*ong 0 django google-app-engine gql

这个Django语句的App Engine相当于什么?

return Post.objects.get(created_at__year=bits[0], 
                            created_at__month=bits[1], 
                            created_at__day=bits[2],
                            slug__iexact=bits[3])
Run Code Online (Sandbox Code Playgroud)

我最后写了这个:

Post.gql('WHERE created_at > DATE(:1, :2, :3) AND created_at < DATE(:1, :2, :4) and slug = :5',
    int(bit[0]), int(bit[1]), int(bit[2]), int(bit[2]) + 1, bit[3])
Run Code Online (Sandbox Code Playgroud)

但与Django相比,这是非常可怕的.还有其他更多的Pythonic/Django魔法方式,例如with Post.filter()或created_at.day/month/year属性?

JJ *_*wax 5

怎么样

from datetime import datetime, timedelta

created_start = datetime(year, month, day)
created_end = created_start + timedelta(days=1)
slug_value = 'my-slug-value'

posts = Post.all()
posts.filter('created_at >=', created_start)
posts.filter('created_at <', created_end)
posts.filter('slug =', slug_value)

# You can iterate over this query set just like a list
for post in posts:
    print post.key()
Run Code Online (Sandbox Code Playgroud)