在__init__外部使用__init__外部的变量

时间:2019-05-28 15:00:25

标签: python django

我想在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 变量? 希望任何人都能帮助我。

1 个答案:

答案 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,因为此字段需要对象,而不是平面的字符串列表。

相关问题