python - 扩展我的搜索功能

标签 python django django-views

我正在考虑尝试扩展我的小项目的搜索功能。现在我可以使用字符字段进行搜索,但我想添加一些复选框。有些项目已标记有 SRED 复选框,我希望也能够搜索仅 SRED 项目。

这是我当前的搜索设置。

模型.py

class Project(models.Model):
...     
proj_name = models.CharField(max_length=255, verbose_name='Project Name')
pre_quote = models.CharField(max_length=3)
quote = models.IntegerField(max_length=10, verbose_name='Quote #', unique=True)
...
SRED = models.BooleanField()
...

View .py

@login_required
def search(request):
if request.method == 'POST':
    form = SearchProjectForm(request.POST)
    if not form.is_valid():
         return render_to_response('project/search.html', {'form': form}, context_instance=RequestContext(request))
    else:
        projects = Project.objects.filter(proj_name__icontains = form.cleaned_data["text"])
        companies = Clients.objects.filter(client_name__icontains = form.cleaned_data["text"])
        return render_to_response('project/search.html', {'form': form, 'projects':projects, 'companies': companies}, context_instance=RequestContext(request))

form = SearchProjectForm()

return render_to_response('project/search.html', {'form': form}, context_instance=RequestContext(request))

表单.py

class SearchProjectForm(forms.Form):
    text = forms.CharField(label = "Search")

搜索.html

<form method="POST" action="">
{% csrf_token %}
{{form}}
<input type="submit" value="Search"/>
</form>
<h3>Search Results</h3>
...

任何帮助将不胜感激!

再次感谢

史蒂夫

最佳答案

您需要将项目传递给表单构造函数,然后根据需要添加框字段:

form = SearchProjectForm(project, request.POST)

和:

class SearchProjectForm(forms.Form):
    text = forms.CharField(label = "Search")

    def __init__(self, project, *args, **kwargs):
      form = forms.Form.__init__(self, *args, **kwargs)
      if project.has_additional_fields():
        self.fields['additional_field'] = forms.SomeField()
      if project.only_additional_fields():
        self.fields['text'].required = False

更多信息请参见:http://jacobian.org/writing/dynamic-form-generation/

关于python - 扩展我的搜索功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4464841/

相关文章:

django - 如何使用 CBV 将 PermissionDenied Redirect 提升到另一个页面?

python - 如何将 2 个参数传递给 def get_queryset?

python - Celery 后台任务出现 "Working outside of request context"错误

python - 在 pyspark 中查找正则表达式?

python - 有没有像 Django 的 XAMPP 这样的一体化软件包?

python - 为什么 django 中 postgres 数据库连接的 connection.timezone 为 None ?

python - Django 查看返回带有额外信息的查询集

python - 如何在 python 中部分加载用 numpy save 保存的数组

python - 使用Python从mysql数据库查询url

python - Django 模板 - 嵌套字典迭代