Как исправить ошибку (Скрытое поле submitted_by) This field is required в django

Я пытаюсь скрыть поле submitted by в моем forms.py, потому что я не хочу, чтобы пользователь загружал задание от имени другого пользователя. Поэтому я скрываю поле, но перед тем, как скрыть его, я устанавливаю значение зарегистрированного пользователя в этот текст ввода с помощью javascript, но получаю следующую ошибку. (Скрытое поле submitted_by) Это поле является обязательным. forms.py

    class assignmentUploadForm(ModelForm):
        class Meta:
            model = Submissions
            fields = ('submitted_by', 'submitted_to',
                      'submission_title', 'submission_file', 'submission_status')
    
            widgets = {
                'submitted_by': forms.TextInput(attrs={'class': 'form-control', 'type': 'hidden', 'id': 'user', 'value': ''}),
                'submitted_to': forms.Select(attrs={'class': 'form-control'}),
                'submission_title': forms.Select(attrs={'class': 'form-control'}),
            }

template 


 <form method="post" enctype="multipart/form-data" style="margin-left: 240px;">
                {% csrf_token %}
               
                {{form.as_p}}
                <input type="submit">
  var name = "{{user.username}}"
        document.getElementById('user').value = name;

views.py 
class AddAssignmentView(CreateView):

    model = Submissions
    form_class = assignmentUploadForm
    template_name = 'project/assignment.html'

Лучше бы его вообще не было в форме.

Все, что нужно сделать, это проинспектировать элемент и изменить тип на hidden.

Вы можете установить значение submitted_by для текущего пользователя в form_valid()

class assignmentUploadForm(ModelForm):
    class Meta:
        model = Submissions
        fields = ('submitted_to', 'submission_title', 
                  'submission_file', 'submission_status')

        widgets = {
            'submitted_to': forms.Select(attrs={'class': 'form-control'}),
            'submission_title': forms.Select(attrs={'class': 'form-control'}),
        }


class AddAssignmentView(CreateView):
    model = Submissions
    form_class = assignmentUploadForm
    template_name = 'project/assignment.html'
    
    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.submitted_by = self.request.user
        self.object.save()
        return HttpResponseRedirect(self.get_success_url())
Вернуться на верх