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 кода, чтобы получить возможность большей настройки.

Вернуться на верх