【发布时间】:2020-02-06 14:13:20
【问题描述】:
我有几个模型的 Django 过滤器。但它们都有相同的过滤方式如何使其干燥。
class TestFilter(django_filters.FilterSet):
field_list = Test._meta.get_fields()
for field in field_list:
field_name = (field.__str__().split('.'))[-1]
if type(field) is model.CharField:
field_name__contains = field_name + '__contains'
vars()[field_name] = django_filters.CharField(field_name=field_name, lookup_expr='iexact')
vars()[field_name] = django_filters.CharField(field_name=field_name, lookup_expr='icontains')
class Meta:
model = Test
fields = '__all__'
class Test2Filter(django_filters.FilterSet):
field_list = Test2._meta.get_fields()
for field in field_list:
field_name = (field.__str__().split('.'))[-1]
if type(field) is model.CharField:
field_name__contains = field_name + '__contains'
vars()[field_name] = django_filters.CharField(field_name=field_name, lookup_expr='iexact')
vars()[field_name] = django_filters.CharField(field_name=field_name, lookup_expr='icontains')
class Meta:
model = Test2
fields = '__all__'
两个类的代码相同。我试图在 utils 中移动代码部分,如 generic_filter 函数并将函数导入过滤器文件,但过滤器不起作用。
【问题讨论】:
标签: python django python-3.x django-filter django-filters