我目前正在尝试使用BaseInFilter。用户可以输入用逗号分隔的ID,如图所示。我想做一个验证器(或者调节用户的输入),这样用户就只能在这里输入整数了
我也试过:
class BaseIntegerFilter(filters.BaseInFilter, filters.NumberFilter):
pass
class HardwareFilter(filters.FilterSet):
queryset = Hardware
serializer_class = HardwareSerializer
id = filters.BaseIntegerFilter(field_name="id", label="Comma separated list of hardware IDs", help_text="Comma separated list of hardware IDs")
但是这个解决方案不再允许我在文本框中输入逗号
有人能帮忙吗?任何帮助都将受到感谢
下面是一些关于用法的指导
使用
filterset_class
和BaseInFilter
queryset
和serializer_class
是view类的字段,而不是过滤器类李>views.py:
filters.py:
HTTP请求(数字):
id__in
,而不仅仅是id
李>HTTP请求(数字和字母):
使用
filterset_fields
views.py:
HTTP请求:
filterset_class
相同UI呈现错误
上面执行的HTTP请求是手动的,不使用
djangorestframework
提供的UI。在使用UI进行尝试时,我遇到了与您所述相同的问题:这与
django_filters
(发生在后端)提供的过滤机制无关,因为这是一个纯粹的前端问题,特别是表单验证我做的一个手动解决方法是检查文本框(右键单击+检查),然后将HTML行从
number
更新为text
。因此,来自:致:
HTTP请求(数字):
HTTP请求(数字和字母):
您可能希望截取
djangorestframework
或django_filters
对HTML的实际呈现,以便干净地执行此操作相关问题 更多 >
编程相关推荐