2016-12-22 6 views
0

私はdjango crispyフォームを使用してフィルタを行い、自分のデータベース内のアイテムを検索しようとしています。私が見つけた例の全部または大部分は「投稿」に関連し、検索には「取得」コールが必要です。ユーザーがモデルフォーム自体から選択するようにして「国」を稼働させることはできますが、私は給与や詳細検索などの検索範囲を追加する際に問題を抱えています。Djangoの新鮮なフォームが検索で呼び出されます

データベース内に含まれているものの一部ではないフォーム入力とともに機能する検索機能を追加する方法はありますか?たとえば、Div(Apparementrange、 '$')とDiv(AppendText( 'Test'、 'Search'))では、フィールドを 'salaryrange'と 'test'に挿入する必要があります。データベースに存在していてもいなくてもかまいません。

私は文書を考えましたが、フィールド入力が必要な例があります。オンラインで見つかった項目はすべて投稿に関連しています。 「これを行う方法があるはずです。以下は

は私のサンプルコード

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 - 私の心は、私がクリスピーなドキュメントの中のどこでも探していたので、それがうまく動作するためには、シンプルなフォームの機能を使用する必要があるボックスに詰まっていました。私は非モデルフィールドを追加したばかりで、今は動作します。私は解決策を1分で投稿し、これを閉じます。それを指摘してくれてありがとう。 – user3655574

答えて

0

それはmodelformsに非モデルフィールドを追加することが可能である。ただ、追加3つの非モデルであり、必要なものを得るためにフィールドをフォームに追加します。フォームは、モデルフィールドと非モデルフィールドの両方の組み合わせで表示されます。

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'), 
       ), 
      ), 
     ) 
関連する問題