2016-12-22 39 views
0

我想使用Django香脆形式做一個過濾器和搜索我的數據庫中的項目。我發現的所有或大部分示例都與「發佈」相關,而搜索需要「獲取」調用。雖然我可以通過讓用戶從模型表單自己選擇它來讓「國家」工作,但我遇到了添加搜索範圍(例如工資和詳細搜索)的問題。Django香脆形式打電話搜索

有沒有一種方法可以添加搜索功能,這些搜索功能可以與不屬於數據庫內部內容的表單輸入一起使用?例如,下面的Div(AppendedText('salaryrange','$')和Div(AppendedText('Test','Search'))要求我在「salaryrange」和「test」中插入一個字段,但這些是可能存在或可能不存在於數據庫中

我以前想過這些文件,但他們給出的例子需要字段輸入,我在網上找到的所有項目都與發佈有關,我認爲如果脆皮形式的方法允許「get 「應該有辦法做到這一點。

下面是我的示例代碼

class ExampleForm(forms.ModelForm): 

    class Meta: 
     model = Worker 
     fields = [ 
       "country", 
       "salary", 
     ] 

    def __init__(self, *args, **kwargs): 
     super(ExampleForm, self).__init__(*args, **kwargs) 
     self.helper = FormHelper() 
     self.helper.form_method = 'get' 
     self.helper.add_input(Submit('submit', value='Submit', css_class='btn-success')) 
     self.helper.layout = Layout(
      TabHolder(
       Tab('Country', 
        Div('country', css_class='col-xs-12 col-md-6 col-lg-4'), 
       ), 
       Tab('Salary', 
        Div(AppendedText('salaryrange', '$'), css_class='col-xs-12 col-md-6 col-lg-4'), 
        Div(AppendedText('salaryrange', '$'), css_class='col-xs-12 col-md-6 col-lg-4'), 
       ), 
       Tab('Detailed Search', 
        Div(AppendedText('Test', 'Search'), css_class='col-xs-12 col-md-6 col-lg-4'), 
       ), 
      ), 
     ) 
+0

如果我正確理解你,你想要一個額外的表單字段是不相關的,你是數據庫? – PetarP

+1

看起來這不是一個關於脆皮形式的問題,這是一個關於Django形式的問題。 Django脆皮表單簡單地幫助你設計一個表單,它不會改變任何有關Django表單核心功能的東西。您可以將模型字段添加到模型表單,就像您將字段添加到普通的Django'Form表單一樣。 – ChidG

+0

嘿,謝謝你的答覆。 ChidG - 我的思緒被困在箱子裏,我需要使用脆皮形式的功能才能使它起作用,這就是爲什麼我在酥脆的文檔中到處搜索,並沒有幫助。我剛剛添加了一個非模型字段,現在它可以工作。我會在一分鐘後發佈解決方案並關閉它。感謝您指出。 – user3655574

回答

0

是可能的非示範田增加modelforms,只是增加了三個非模式字段到表單以獲取所需內容。使用模型和非模型字段組合顯示的表單。

class ExampleForm(forms.ModelForm): 
    search = forms.CharField(label='Search', max_length=100) 
    salarymaxrange = forms.IntegerField() 
    salaryminrange = forms.IntegerField() 

    class Meta: 
     model = Worker 
     fields = [ 
       "country", 
       "salary", 
     ] 

    def __init__(self, *args, **kwargs): 
     super(ExampleForm, self).__init__(*args, **kwargs) 
     self.helper = FormHelper() 
     self.helper.form_method = 'get' 
     self.helper.add_input(Submit('submit', value='Submit', css_class='btn-success')) 
     self.helper.layout = Layout(
      TabHolder(
       Tab('Country', 
        Div('country', css_class='col-xs-12 col-md-6 col-lg-4'), 
       ), 
       Tab('Salary', 
        Div(AppendedText('salarymaxrange', '$'), css_class='col-xs-12 col-md-6 col-lg-4'), 
        Div(AppendedText('salaryminrange', '$'), css_class='col-xs-12 col-md-6 col-lg-4'), 
       ), 
       Tab('Detailed Search', 
        Div(AppendedText('search', 'Search'), css_class='col-xs-12 col-md-6 col-lg-4'), 
       ), 
      ), 
     )