我想在DefaultKafkaProducerFactory
之外的def__init__
内部使用一个变量。这是我班上的def__init__
:
def__init__
我想像这样在class UserResponseSearchForm(forms.Form):
def __init__(self, *args, **kwargs):
qry = kwargs.pop('qry')
super(UserResponseSearchForm,self).__init__(*args, **kwargs)
之外使用变量 qry :
def__init__
我在 gejala__icontains = qry 中使用变量 qry ,像这样:
class UserResponseSearchForm(forms.Form):
def __init__(self, *args, **kwargs):
qry = kwargs.pop('qry')
super(UserResponseSearchForm,self).__init__(*args, **kwargs)
gejala_id1 = forms.ModelMultipleChoiceField(queryset=Gejala.objects.all().values_list('gejala', flat=True).distinct().filter(gejala__icontains = qry).order_by('gejala'), widget=forms.CheckboxSelectMultiple, required=False)
它返回未定义名称'qry'。那是什么问题呢?以及如何使用 qry 变量? 希望任何人都能帮助我。
答案 0 :(得分:1)
您需要在__init__
内执行此操作:
class UserResponseSearchForm(forms.Form):
def __init__(self, *args, **kwargs):
qry = kwargs.pop('qry')
super(UserResponseSearchForm,self).__init__(*args, **kwargs)
self.fields['gejala_id1'] = forms.ModelMultipleChoiceField(queryset=Gejala.objects.filter(gejala__icontains = qry).distinct().order_by('gejala'), widget=forms.CheckboxSelectMultiple, required=False)
请注意,您不应该为values_list('gejala', flat=True)
做ModelMultipleChoiceField
,因为此字段需要对象,而不是平面的字符串列表。