2016-12-22 40 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'), 
       ), 
      ), 
     )