我的项目中有一个搜索框,问题是用户可以输入任何关键字,并且我的 ModelForm 过滤了我明确告诉过滤的字段,我在我的表单中使用以下代码:
def get_matching_siniestros(self):
if self.cleaned_data['keywords'] is None:
return None
matching = []
for kw in self.cleaned_data['keywords']:
numero_ajuste = Siniestro.objects.filter(
numero_ajuste__icontains=kw
)
nombre_contratante = Siniestro.objects.filter(
poliza__contratante__nombre__icontains=kw
)
matching = chain(
numero_ajuste,
nombre_contratante,
matching
)
# verify not repeated Siniestro
non_rep_siniestros = []
for siniestro in matching:
if siniestro not in non_rep_siniestros:
non_rep_siniestros.append(siniestro)
return non_rep_siniestros
我想要做的是以编程方式过滤模型中的任何 CharField,如果可能的话,还可以过滤嵌套关系的任何 CharField,在这个例子中 Siniestro 有一个 poliza 的 FK 和 poliza 有一个 contratante 的 FK。