【发布时间】:2021-03-26 21:14:36
【问题描述】:
我只想用 Django rest 框架构建过滤 API。一个字段是 datetime2。我想过滤具有 NULL 值的记录作为 datetime2。
这是我的models.py
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()
urls.py
path('productprice/', ProductPriceViewSet.as_view({'get':'list','post':'create'}), name="product-price"),
这让我很容易实现分页、过滤和排序。 但我有一个问题。我需要过滤 ruleend 中为空值的记录。
null 的有效日期/时间是什么?或者我应该在我的后端添加一些东西?
【问题讨论】:
-
你能不能尝试不在请求中发送 ruleend 字段,看看会发生什么。
-
如果我不发送 ruleend 字段,它会成功获取数据。但它不会过滤 ruleend 字段。
标签: python django rest pagination backend