我的英语。我尝试创建一些像?date=201803
这样的过滤器列表 - 它可以获得2018年03月的所有数据。这是我的模特:
class TestModel(models.Model):
id = models.UUIDField(primary_key=True, unique=True, default=uuid.uuid4, editable=False)
date = models.DateTimeField(blank=False)
text = models.TextField(max_length=256, blank=False)
这是我的观点:
class TestView(generics.ListCreateAPIView):
permission_classes = (permissions.IsAuthenticated,)
serializer_class = TestSerializer
queryset = TestModel.objects.all()
filter_backends = (DjangoFilterBackend,)
filter_fields = ('date',)
但是,如果我这样做可以查看某个日期:
?date=2005-03-12T21:48:00Z
字段date = models.DateTimeField(blank=False)
必须为DateTimeField
怎么办这样的请求:?date=201803
?
UPD: 此代码返回空列表
permission_classes = (permissions.IsAuthenticated,)
serializer_class = GlobalLogSerializer
filter_backends = (DjangoFilterBackend, )
filter_fields = ('date', )
def get_queryset(self):
queryset = GlobalLog.objects.all()
date = self.request.query_params.get('date', None)
if date is not None:
queryset = GlobalLog.objects.filter(date__year=2017, date__month=3)
return queryset
答案 0 :(得分:2)
您必须将201803拆分为年份和月份。然后您可以使用以下查询
进行查询TestModel.objects.filter(date__year=2018,date__month=03)