Я пользуюсь модельными формами для того, чтобы пользователь / персонал подал заявку на отпуск, но не могу сохранить форму в БД, используя код ниже. Моя форма отправляет проверяет и отправляет просто отлично, но когда я проверяю на сайте администратора, нет новых записей
Views.py:
@login_required
def ApplyLeave(request):
if request.method == 'POST':
form = ApplyLeaveForm(request.POST, instance=request.user)
if form.is_valid():
leave = form.save(commit=False)
messages.success(request, f'Submitted successfully')
leave.staff = request.user.username
leave.save()
return redirect('/')
else:
form = ApplyLeaveForm(instance=request.user)
context = {'form': form,
}
return render(request, 'apply-leave.html', context)
forms.py:
class ApplyLeaveForm(LeaveForm):
class Meta:
model = Leave
fields = [
'leave_type',
'start',
'end',
'reason',
]
start = forms.DateField(
widget=forms.DateInput(format='%d/%m/%Y'),
input_formats=('%d/%m/%Y', )
)
end = forms.DateField(
widget=forms.DateInput(format='%d/%m/%Y'),
input_formats=('%d/%m/%Y', )
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.request = kwargs.pop('request', None)
if self.request:
try:
self.request.user.staffprofile
except StaffProfile.DoesNotExist:
pass
else:
self.fields['staff'].queryset = StaffProfile.objects.filter(
id=self.request.user.staffprofile.id)
self.helper = FormHelper()
self.helper.form_tag = True
self.helper.form_method = 'post'
self.helper.render_required_fields = True
self.helper.form_show_labels = True
self.helper.html5_required = True
self.helper.form_id = 'leave-application-form'
self.helper.layout = Layout(
Field('staff', type="hidden"),
Field('leave_type',),
Field('start',),
Field('end',),
Field('reason',),
FormActions(
Submit('submitBtn', _('Submit'), css_class='btn-primary'),
)
)