Форма 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", она не сохраняет мои данные и не хочет перенаправлять на назначенную страницу.
На терминале я получил http 200, что означает OK, вместо 302 (перенаправление)
Я пробовал менять представления, шаблон, даже модифицировать некоторые части формы и модели, но все осталось по-прежнему. Я также пытался прошить базу данных, но это не помогло. Интересно, может я что-то упустил, потому что у меня есть две другие формы с похожим кодом, но они работают правильно