Django - Сохраняйте определенные поля в форме после отправки
У меня есть представление, которое имеет простую функциональность "сохранить и добавить другую", которая перенаправляет пользователя на ту же страницу после отправки формы.
Вид:
def new_planning(request):
form = PlanningForm(request.POST)
if form.is_valid():
form.save()
if 'another' in request.POST:
messages.success(request, ('Success!'))
return redirect('new_planning')
else:
return redirect('list_planning')
return render(request, 'pages/planning/new_planning.html', context={
'form': form,
})
Форма:
class PlanningForm(forms.ModelForm):
accountplan = ModelChoiceField(
queryset=AccountsPlan.objects.filter(active=True).order_by('code'),
)
month = forms.DateField(
required=True,
error_messages={'required': '', },
)
amount = forms.DecimalField(
max_digits=9,
decimal_places=2,
required=True,
validators=[
error_messages={'required': '', },
)
class Meta:
model = Planning
fields = '__all__'
Функция работает, как ожидалось, и после отправки та же страница отображается с пустой формой. Я хочу оставить пустым только поле "сумма" и сохранить данные, введенные в полях "план счетов" и "месяц". Есть ли способ сделать это?
<Если переписать "ModelForm" в класс "Model", то можно получить значения размещенных данных и вывести их на страницу.
Например:
# views.py
def ContactPageView(request):
if request.method == "POST":
email = request.POST.get('email')
message = request.POST.get('message')
message_element = ContactFormObject(email=email, message=message)
message_element.save()
else:
name, message = '', ''
form_data = name, message
return render(request, 'contact.html', {'form_data': form_data})
# models.py
class ContactFormObject(models.Model):
email = models.CharField(max_length=100) #....
ModelForm более удобен, но я не рекомендую его, если у вас есть лишние 10 минут для написания HTML кода, чтобы получить возможность большей настройки.