gpt4 book ai didi

python - 需要用ajax调用实现django-filter

转载 作者:行者123 更新时间:2023-12-05 08:07:15 26 4
gpt4 key购买 nike

我正在使用 django-filter==2.1.0 作为我的搜索过滤器。现在我需要在我的搜索过滤器中添加 ajax 调用。我的代码如下:

views.py

def test_view(request):
book_list = Book.objects.all()
book_filter = BookFilter(request.GET, queryset=book_list)
return render(request, 'test.html', {'filter': book_filter})

test.html

{% extends 'base.html' %}
{% load widget_tweaks %}

{% block content %}

<form method="get">
{{ filter.form.as_p }}
<button type="submit">Search</button>
</form>

<ul>
{% for book in filter.qs %}
<li>{{ book.name }}</li>
{% endfor %}
</ul>

{% endblock %}

过滤器.py

class BookFilter(django_filters.FilterSet):

publication = django_filters.ModelMultipleChoiceFilter(queryset=Publication.objects.all(), widget=forms.CheckboxSelectMultiple)

authors = django_filters.ModelMultipleChoiceFilter(queryset=Author.objects.all(), widget=forms.CheckboxSelectMultiple)

categories = django_filters.ModelMultipleChoiceFilter(queryset=Category.objects.all(), widget=forms.CheckboxSelectMultiple)

class Meta:
model = Book
fields = ['publication', 'authors', 'categories', ]

模型.py

class Book(models.Model):
name = models.CharField(max_length=100)
publication = models.ForeignKey(Publication, on_delete=models.CASCADE)
authors = models.ManyToManyField(Author, through='AuthorBook')
categories = models.ManyToManyField(Category, through='BookCategory')

在 ajax 中需要 url 值。 django-filter 自动工作。所以,我无法理解如何使用 django_filter 实现 ajax 调用。提前致谢。

最佳答案

django-crispy-forms 添加到您的 requeirements.txt使用示例:

views.py

filter = YourFilterClass(request.GET, queryset=Model.objects.all())
return render(request,'template/index.html', {filter:filter})

html

<form method="get">
<div class="form-group">
<label class="col-md-4 control-label">Şehir :</label>
<div class="col-md-8">
<div class="col-md-12 col-xs-12">
{% render_field filter.form.customer__city class="form-control select" data-live-search="true" data-size="15" %}
</div>
</div>
</div>
</form>

在您可以使用 ajax 提交表单后,它将返回过滤后的对象

关于python - 需要用ajax调用实现django-filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55586176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com