Форма Django не отправляется, но не показывает ошибку

models.py

class HopperFillData(models.Model):
    no_mesin = models.CharField('No Mesin', max_length=3, choices=mesin_choice, default=mesin_choice[0])
    product = models.ForeignKey(Product, on_delete=models.CASCADE, verbose_name='Product', default=None)
    no_lot = models.IntegerField('No Lot', blank=True, null=True)
    temp = models.IntegerField('Temperature', blank=False, null=False)
    tanggal = models.DateField('Tanggal', blank=False, null=False)
    jam_isi = models.TimeField('Jam Isi', blank=False, null=False)
    target_pemakaian = models.PositiveIntegerField('Usage Total', blank=False, null=False)
    pemakaian_virgin = models.PositiveIntegerField('Usage Virgin', blank=False, null=False)
    pemakaian_regrind = models.PositiveIntegerField('Usage Regrind', blank=False, null=False)
    pic = models.ForeignKey(UserModel, on_delete=models.CASCADE, verbose_name='PIC', to_field='username', blank=True, null=True)
    shift = models.CharField('Shift', max_length=7)
    
    def __str__(self):
        hop = '{0.no_mesin}'
        return hop.format(self)
    
    def get_absolute_url(self):
        return reverse('hopper_fill_data')

forms.py

class HopperFillForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(HopperFillForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper(self)
        self.helper.form_method = 'post'
        self.helper.layout = Layout(
            Row(
                Column('no_mesin', css_class = 'col-md-2'),
                Column('product', css_class = 'col-md-7'),
                Column('no_lot', css_class = 'col-md-1'),
                Column(AppendedText('temp', '°C'), css_class = 'col-md-2'),
                css_class = 'row'
                ),
            Row(
                Column(MultiWidgetField('tanggal', attrs = ({'style':'width : 30%; display: inline-block; margin-right:0.15em'},)), css_class='col-md-8'),
                Column('jam_isi', css_class = 'col-md-4'),
                css_class = 'row'
                ),
            Row(
                Column(AppendedText('target_pemakaian', 'kg'), css_class = 'col-md-4'),
                Column(AppendedText('pemakaian_virgin', 'kg'), css_class = 'col-md-4'),
                Column(AppendedText('pemakaian_regrind', 'kg'), css_class = 'col-md-4'),
                css_class = 'row'
                ),
            Submit('submit', 'Submit Material Hopper')
        )

        self.fields['tanggal'].widget = SelectDateWidget(years = range(2000, date.today().year+3))
        self.fields['tanggal'].initial = datetime.today()
        self.fields['jam_isi'].widget = forms.TimeInput(attrs={'type':'time'})
        self.fields['jam_isi'].input_formats = settings.TIME_FORMAT
        self.fields['jam_isi'].initial = datetime.today().strftime('%H:%M')
        self.fields['shift'].widget = forms.HiddenInput()
        self.fields['shift'].initial = 'Shift 1'
        self.fields['pic'].widget = forms.HiddenInput()
        self.fields['pic'].initial = None

    class Meta:
        model = HopperFillData
        fields = '__all__'
        labels = {  'no_mesin' : ('No Mesin'),
                    'product' : ('Product'),
                    'no_lot' : ('No Lot'),
                    'temp' : ('Temperature'),
                    'tanggal' : ('Tanggal'),
                    'jam_isi' : ('Jam Isi'),
                    'target_pemakaian' : ('Target Pemakaian'),
                    'pemakaian_virgin' : ('Usage Virgin'),
                    'pemakaian_regrind' : ('Usage Regrind'),
                    'pic' : ('PIC'), 
                    'shift' : ('Shift'),
        }

views.py

class HopperFillView(LoginRequiredMixin, CreateView):
    form_class = HopperFillForm
    template_name = 'hopper_fill.html'

    def form_valid(self, form):
        no_mesin = form.cleaned_data['no_mesin']
        product = form.cleaned_data['product']
        no_lot = form.cleaned_data['no_lot']
        temp = form.cleaned_data['temp']
        tanggal = form.cleaned_data['tanggal']
        jam_isi = form.cleaned_data['jam_isi']
        target_pemakaian = form.cleaned_data['target_pemakaian']
        pemakaian_virgin = form.cleaned_data['pemakaian_virgin']
        pemakaian_regrind = form.cleaned_data['pemakaian_regrind']
        pic = form.cleaned_data['pic']
        shift = form.cleaned_data['shift']

        t = super(HopperFillView, self).form_valid(form = form)
        form.instance.shift = get_shift(jam_isi)
        form.instance.pic = self.request.user
        form.save()
        return t

urls.py

urlpatterns = [
    path('hopper_fill/new/', login_required(HopperFillView.as_view(), login_url='login'), name='hopper_fill'),
    path('hopper_fill_list/', login_required(HopperDataListView.as_view(), login_url='login'), name='hopper_fill_data'),
]

html

{% extends 'base.html' %} 
{% load crispy_forms_tags %}


{% block title %} Hopper Fill Form {% endblock title %}

<head>
    {%block javascript %}
        ....
    {% endblock javascript %}
</head>

<body>
    {% block content %}
    <style>
        form label{
            display: block;
        }
    </style>
    <h3>Material Hopper Form</h3>

    <div>
        {% csrf_token %} 
        {% crispy form %}
    </div>
    
    {% endblock content %}
</body>

Форма отображается правильно, но когда я нажимаю на кнопку "Submit", она не сохраняет мои данные и не хочет перенаправлять на назначенную страницу.

The form rendered properly

На терминале я получил http 200, что означает OK, вместо 302 (перенаправление)

terminal

Я пробовал менять представления, шаблон, даже модифицировать некоторые части формы и модели, но все осталось по-прежнему. Я также пытался прошить базу данных, но это не помогло. Интересно, может я что-то упустил, потому что у меня есть две другие формы с похожим кодом, но они работают правильно

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