我只想用Django rest框架构建过滤API。一个字段是datetime2。我想筛选具有空值datetime2的记录
这是我的模特
ruleend = models.DateTimeField(db_column='RuleEnd', blank=True, null=True)
这是我的serializer.py
class ProductPriceSerializer(serializers.ModelSerializer):
class Meta:
model = ProductPrice
fields = ['pricingruleid', 'productkey', 'productcode', 'customerid', 'customerchain', 'productpriceusd', 'rulestart', 'ruleend', 'creatorupn', 'created', 'customername', 'productdescription']
这里是views.py
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()
url.py
path('productprice/', ProductPriceViewSet.as_view({'get':'list','post':'create'}), name="product-price"),
这使我很容易实现分页、过滤和排序。 但我有一个问题。我需要筛选ruleend中具有空值的记录
空值的有效日期/时间是多少?或者我应该添加一些东西到我的后端
您需要在ProductPriceSerializer中添加此行
ruleend = fields.DateField(input_formats=['%Y-%m-%dT%H:%M:%S.%fZ'])
,以便通过datetime输入进行验证:更新: 用于筛选ruleend中具有空值的记录。您只需要像下面这样覆盖列表方法:
我找到了最好的答案。我可以使用客户过滤器
我将自定义字段设置为“isrulendNull”
我希望这能帮助其他和我面临同样问题的人
相关问题 更多 >
编程相关推荐