Сохранение Django ModelForms - PullRequest
0 голосов
/ 03 марта 2020

Я пользуюсь модельными формами для того, чтобы пользователь / персонал подал заявку на отпуск, но не могу сохранить форму в БД, используя код ниже. Моя форма отправляет проверяет и отправляет просто отлично, но когда я проверяю на сайте администратора, нет новых записей

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'),
            )
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...