Поэтому я пытаюсь выяснить, существует ли способ отфильтровать результаты базы данных с помощью django_filter, а затем (по тому же URL-адресу) использовать отфильтрованные результаты в форме для их редактирования.
У меня есть FilterSet, который работает отлично, и результаты представляют собой простой текст с кнопкой редактирования, которая приводит меня к другому URL-адресу, где я могу редактировать результаты в форме.Однако я хотел бы отредактировать результаты на той же веб-странице, чтобы редактировать их прямо сейчас.Так что в основном просто объединение фильтрации и редактирования на одной странице.Есть ли способ объединить оба шаблона?Вот часть моего кода.
my filters.py
class CSVFilter(django_filters.FilterSet):
class Meta:
model = Excel7
fields = {'test1' : ['icontains'], 'test2' :
['icontains'], 'test3' : ['icontains'], 'test4' : ['icontains']}
my forms.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>
Любая помощь будет оценена