문제

이 장고 문과 동등한 앱 엔진은 무엇입니까?

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

나는 이것을 썼다 :

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])

그러나 Django에 비해 끔찍합니다. 다른 더 많은 pythonic/django-magic way, 예를 들어 Post.filter() 또는 created_at.day/month/year 속성?

도움이 되었습니까?

해결책

당신은 'RelativeDelta'가 필요하지 않습니다 - 당신이 설명하는 것은 datetime.timedelta입니다. 그렇지 않으면, 당신의 대답은 좋아 보인다.

처리 시간이 다가 오는 한, App Engine의 좋은 점은 거의 모든 쿼리가 평범한 비용이 동일한 비용을 가지고 있으며, 이들 모두는 총 데이터 저장소 크기가 아니라 반환 된 레코드에 비례하여 비례 적으로 규모입니다. 따라서 솔루션은 제대로 작동합니다.

또는 다른 것을 위해 하나의 불평등 필터가 필요한 경우 'create_day'dateProperty를 추가하고 간단한 평등을 확인할 수 있습니다.

다른 팁

어때

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()

끝을 사용하게되었습니다 relativedelta 도서관 + 필터를 jQuery 스타일로 체인하는데, 아직 너무 피스닉은 아니지만 아직 쓰기가 더 편안하고 건조기가 많습니다. :) 아마도 더 많은 데이터베이스 처리 시간이 필요할 것이기 때문에 여전히 가장 좋은 방법인지 확실하지 않습니까?

date = datetime(int(year), int(month), int(day))
... # then
queryset = Post.objects_published()
                            .filter('created_at >=', date)
                            .filter('created_at <', date + relativedelta(days=+1))
                            ...

그리고 슬러그를 전달합니다 object_detail 보기 또는 또 다른 필터.

그건 그렇고, 당신은 datetime.timedelta를 사용할 수 있습니다. 날짜 범위 또는 날짜 델타를 찾을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top