プロジェクトに検索ボックスがあります。ユーザーは任意のキーワードを入力でき、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にはFK to polizaがあり、polizaにはFKtocontratanteがあります。