Django-一起使用django_filter和Django Forms

时间:2018-12-22 17:26:03

标签: django python-3.x django-forms django-filter

所以我试图找出是否有一种方法可以使用django_filter过滤数据库的结果,然后(在相同的URL上)以表单的形式使用过滤后的结果进行编辑。

我有一个工作正常的FilterSet,结果是纯文本,带有编辑按钮,可将我带到另一个可以在Form中编辑结果的URL。但是,我想在同一网页上编辑结果,然后在那儿在那里进行编辑。因此,基本上只将过滤和编辑结合在一页上。有没有办法结合两个模板?这是我的一些代码。

我的filters.py

class CSVFilter(django_filters.FilterSet):
    class Meta:
        model = Excel7
        fields = {'test1' : ['icontains'], 'test2' : 
['icontains'], 'test3' : ['icontains'], 'test4' : ['icontains']}

我的表格.py

class DocumentForm(forms.ModelForm):

    test1= forms.CharField(required=False)
    test2= forms.CharField(required=False)
    test3= forms.CharField(required=False)
    test4= forms.CharField(required=False)
    test5= forms.CharField(required=False)
    test6= forms.CharField(required=False)
    test7= forms.CharField(required=False)
    test8= forms.CharField(required=False)
    test9= forms.CharField(required=False)

    class Meta:
        model = Excel7
        fields = ('test1', 'test2', 'test3', 'test4', 'test5',
                   'test6', 'test7', 'test8', 'test9', )

处理过滤的视图

def filter_location(request):
    user_list = Excel7.objects.values()
    user_filter = CSVFilter(request.GET, queryset=user_list)
    return render(request, 'excel/filter_port.html', {'filter': 
user_filter})

编辑视图

def edit_port(request, id):
    instance = get_object_or_404(Excel7, id = id)
    form = DocumentForm(request.POST, instance=instance)
    m = Excel7.objects.filter(id = id).values()
    if request.method == 'POST':
        if form.is_valid():
            instance = form.save(commit=False)
            instance.save()
        return redirect('excel:index')
    else:
        data = {
            'form': form, 'id': id, 'excel5': instance, 'model': m, 'test1' 
 : instance.test1,
            'test2' : instance.test2, 'test3' : 
instance.test3, 'test4' : instance.test4, 'test5' : instance.test5
        }
        form = DocumentForm(initial=data)
    return render(request, "excel/edit_entry.html", {'form' : form})

filter_port.html

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

  {% for excel5 in filter.qs %}
        <li>
     {{ excel5.test1}} - {{ excel5.test2}} - {{ excel5.test3}}
     - {{ excel5.test4}} - {{ excel5.test5}}

    <ul>
        <a href = "{% url 'excel:edit_results' excel5.id %}">
            <button>Edit</button>
        </a>
    </ul>
        </li>

  {% endfor %}
</ul>

edit_entry.html

<h2>Edit Entry {{id}} </h2>

<form method="POST" enctype="multipart/form-data" action="">
    {% csrf_token %}
    {{ form.test1}}
    {{ form.test2}}
    {{ form.test3}}
    {{ form.test4}}
    {{ form.test5}}
    <button type="submit">Save</button>
</form>
<ul>
{% for excel5 in model %}
    {{excel5.test1}} - {{ excel5.test2}}
     - {{ excel5.test3}} - {{ excel5.test4}}
     - {{ excel5.test5}}

</ul>
{% endfor %}

<a href = "{% url 'excel:index' %}">
<button>Cancel</button>
</a>

任何帮助将不胜感激

0 个答案:

没有答案