所以我试图找出是否有一种方法可以使用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>
任何帮助将不胜感激