Я новичок в Django и пытаюсь научиться создавать веб-приложения. Я пытаюсь удалить запись без обязательных полей формы. Я хочу, чтобы они требовались только при создании новой записи. Вот снимок экрана:
введите описание изображения здесь
Вот мой form.py:
from django import forms
class ExpenseForm(forms.Form):
name = forms.CharField(
max_length=255,
widget=forms.TextInput(attrs={
"class": "form-control",
"placeholder": "Expense Name"
})
)
amount = forms.DecimalField(
max_digits=16,
decimal_places=2,
widget=forms.NumberInput(attrs={
"class": "form-control",
"placeholder": "$400.00"
})
)
Вот мой view.py :
from django.shortcuts import render
from budget.models import Expense
from .forms import ExpenseForm
from django.http import HttpResponse, HttpResponseRedirect
from django.db.models import Sum
def budget_view(request):
expenses = Expense.objects.all()
total = Expense.objects.aggregate(total=Sum('amount'))['total']
form = ExpenseForm()
if request.method == 'POST':
form = ExpenseForm(request.POST)
if form.is_valid() and 'create-expense' in request.POST:
expense = Expense(
name=form.cleaned_data["name"],
amount=form.cleaned_data["amount"]
)
expense.save()
return HttpResponseRedirect('/')
elif form.is_valid() and 'edit-expense' in request.POST:
return HttpResponseRedirect('/')
else:
expense = Expense.objects.get(id=request.POST.get("delete-expense"))
expense.delete()
return HttpResponseRedirect('/')
context = {
"form": form,
"expenses": expenses,
"total": total,
}
return render(request, "budget_view.html", context)
Я пробовал добавить form.fields[<field_name>].required() = False
в блок else, но безуспешно. Нужно ли мне создавать собственный clean () в form.py для проверки каждого файла поля или есть еще что-нибудь, что я могу попробовать?
Заранее спасибо