私はtastypie APIを使用してDjangoアプリに取り組んでいます。基本的にオブジェクトを作成し、日付でフィルタリングして、どのオブジェクトが新しいかを知りたいです(「その日付から今日までのすべてのオブジェクトを教えてください」のような)。それが重要かどうかはわかりませんが(重要だと思います)、mongoDBを使用しています。
私が苦労して ?&published__gte=2013-02-01
いるのは、単純に、日付でフィルタリングする最も論理的な方法は何ですか? 私は私に精度を尋ねることを躊躇しないでください。
これが私のモデルです:
class Object(models.Model):
name = models.CharField(max_length=200)
published = models.DateTimeField('date published')
ここに私のリソースがあります:
class ObjectResource(ModelResource):
class Meta:
queryset = Object.objects.all()
resource_name = 'object'
filtering = {
"published": ['gte', 'lte', 'exact'],
}
def build_filters(self, filters=None):
if filters is None:
filters = {}
orm_filters = super(Object, self).build_filters(filters)
if('published' in filters):
published = filters['published']
# need to do some modifications on the date format here i guess
qset = (Q(published=published))
orm_filters.update({'from': qset})
return orm_filters
def apply_filters(self, request, applicable_filters):
if 'from' in applicable_filters:
from_ = applicable_filters.pop('from')
else:
from_ = None
semi_filtered = super(ObjectResource, self).apply_filters(request, applicable_filters)
return semi_filtered.filter(from_) if from_ else semi_filtered
アップデート
build_filter を次のように変更しました。
if('published' in filters):
published = filters['published']
qset = (Q(published=published) |
Q(published__lte=published) |
Q(published__gte=published))
orm_filters.update({'from': qset})
return orm_filters
次のエラーが表示されます。argument of type 'NoneType' is not iterable
したがって、フィルタリングすると結果が得られないと思います。おそらく日付形式に違いはありますか?