Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django ChoiceField正在自动添加文本框。。?_Python_Django_Django Forms_Django Haystack - Fatal编程技术网

Python Django ChoiceField正在自动添加文本框。。?

Python Django ChoiceField正在自动添加文本框。。?,python,django,django-forms,django-haystack,Python,Django,Django Forms,Django Haystack,我的Django表单自动添加一个文本输入字段和一个下拉菜单。我想要一个下拉菜单来过滤结果。这是我的密码: forms.py from haystack.forms import FacetedSearchForm from django import forms class FacetedProductSearchForm(FacetedSearchForm): desc = forms.ChoiceField(choices=[('n', 'Ascending'), ('y', '

我的Django表单自动添加一个文本输入字段和一个下拉菜单。我想要一个下拉菜单来过滤结果。这是我的密码:

forms.py

from haystack.forms import FacetedSearchForm
from django import forms

class FacetedProductSearchForm(FacetedSearchForm):

    desc = forms.ChoiceField(choices=[('n', 'Ascending'), ('y', 'Descending')], label='', initial='y')

    def __init__(self, *args, **kwargs):
        data = dict(kwargs.get("data", []))

        self.retailer = data.get('retailer', [])
        self.location = data.get('location', [])
        super(FacetedProductSearchForm, self).__init__(*args, **kwargs)

    def search(self):
        sqs = super(FacetedProductSearchForm, self).search()       

        if self.cleaned_data['desc'] == 'y':
            query = None

            sqs = sqs.order_by('-retailer')
        else:
            sqs = sqs.order_by('retailer')
        return sqs
results.html

<div class="tab-filter">
    <form id="searchformsort" action="" method="get" >
        <select id=sort class="selectpicker" data-style="btn-select"/>
            <option>Sort by</option>
            <option> {{ form }} </option>

        </select>
    </form>
</div>

排序
{{form}}

将此添加到您的选择字段:

widget=forms.Select,
从文件:

小部件是Django对HTML输入元素的表示

通过这个小部件,您可以告诉django使用select渲染字段


希望此帮助

谢谢,尝试过,但似乎仍然在我的表单中添加了文本搜索框。混乱…嗯,尝试创建一个虚拟表单,并通过使用默认的django格式将其传递给视图,如
类DummyForm(forms.form):desc=forms.ChoiceField(choices=[('n','singressing'),('y','degressing')],label='',initial='y',widget=forms.Select)