簡體   English   中英

Django / Python-檢查參數是否傳遞給類

[英]Django/Python - Check if argument was passed to class

我正在將不同的參數傳遞給Django表單,並希望檢查在表單的類中傳遞了哪個參數。 我怎樣才能做到這一點?

views.py

...
form = CategoryForm(choose_category =True)
...

forms.py

class CategoryForm(forms.Form):

    def __init__(self, *args, **kwargs):

        self.choose_category = kwargs.pop('choose_category',None)
        super(CategoryForm,self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_method = 'POST'

        if not self.choose_category:
            self.helper.add_input(Submit('submit', 'Submit', css_class='btn-success'))

    if self.choose_category:
        do something

在上面的示例中-錯誤是name 'self' is not defined ,我如何檢查__init__之外的choose_category的存在?

這是一個關於python的問題,我如何檢查從類內部但在__init__構造函數外部傳遞了哪些參數的類。 如果我能理解我正在做的邏輯破裂,也歡迎回答--你不能,這是愚蠢的-)

謝謝!

編輯:表格。 PY

無法理解為什么這不起作用並且字段不顯示:

class CategoryForm(forms.Form)

    def __init__(self, *args, **kwargs):

        self.choose_category = kwargs.pop('choose_category',None)
        super(CategoryForm,self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_method = 'POST'

        if not self.choose_category:

            self.helper.add_input(Submit('submit', 'Submit', css_class='btn-success'))
            self.onchange(False)
        else:
            self.onchange(True)

    def onchange (self, val):

        if val:
            category = forms.ModelChoiceField(
                queryset =Categories.objects.all(),
                widget = forms.Select(attrs = {'onchange':'form.submit();'}) ,
                empty_label= None,
                required=True
                )
            print('why doesnt it work this way')
        else:
            category = forms.ModelChoiceField(queryset =Categories.objects.all() ,empty_label= None,required=True)

這種事情必須在__init__內部完成。 在這里,您可以通過self.fields字典添加或修改字段定義。

if choose_category:
    self.fields['cat'] = forms.ModelChoiceField(queryset=....)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM