<p>您需要在ProductPriceSerializer中添加此行<code>ruleend = fields.DateField(input_formats=['%Y-%m-%dT%H:%M:%S.%fZ'])</code>,以便通过datetime输入进行验证:</p>
<pre><code>from rest_framework import serializers, fields
class ProductPriceSerializer(serializers.ModelSerializer):
ruleend = fields.DateField(input_formats=['%Y-%m-%dT%H:%M:%S.%fZ'])
class Meta:
model = ProductPrice
fields = ['pricingruleid', 'productkey', 'productcode', 'customerid', 'customerchain', 'productpriceusd', 'rulestart', 'ruleend', 'creatorupn', 'created', 'customername', 'productdescription']
</code></pre>
<p>更新:
用于筛选ruleend中具有空值的记录。您只需要像下面这样覆盖列表方法:</p>
<pre><code>class ProductPriceViewSet(viewsets.ModelViewSet):
serializer_class = ProductPriceSerializer
pagination_class = pagination.PageNumberPagination
filter_backends = [DjangoFilterBackend, filters.OrderingFilter]
filterset_fields = ['customerid', 'customername', 'productkey', 'productdescription', 'ruleend', 'rulestart']
ordering_fields = ['customerid', 'productkey', 'rulestart']
def get_queryset(self):
self.pagination_class.page_size_query_param = 'page_size'
return ProductPrice.objects.all()
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
# Custom filter
ruleend = str(request.GET.get('ruleend', ''))
if ruleend.lower() == 'null':
queryset = queryset.filter(ruleend__isnull=True)
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
</code></pre>