У меня есть эта простая функция для обновления существующей записи, извлекая ее по первичному ключу в форме, а затем обновляя ее в базе данных в Django 2.0.1. Я могу просто получить данные из базы данных, но когда я нажимаю Submit to POST, запрос отправляется ([17/Jun/2019 17:59:28] "POST /suppliers/lr/13/ HTTP/1.1" 200 25533
), но в базе данных не отражаются никакие изменения. Это мой код:
Views.py
@login_required
@supplier_required
def LrFormView (request, pk):
lr_object = get_object_or_404(LR, id=pk) # Or slug=slug
form = LrForm(data=request.POST or None, instance=lr_object)
if form.is_valid():
form.save() # redirect()
return render(request, 'classroom/suppliers/print_LR.html', {'form': form})
Forms.py
class LrForm(forms.ModelForm):
class Meta:
model = LR
fields = ('lr_declared', 'ewaybill_no', 'lr_quantity', 'lr_weight', 'lr_invoice_date', 'lr_item_name',
'lr_consignor_name', 'lr_consignor_address', 'lr_consignor_contact_name',
'lr_consignor_contact_phone', 'lr_consignee_name', 'lr_consignee_address',
'lr_consignee_contact_name', 'lr_consignee_contact_phone', 'vehicle_no', 'lr_vehicle_type',
'driver_name', 'driver_no', 'lr_no', 'lr_date', 'lr_billingparty', 'invoice_no')
models.py:
class LR(models.Model):
lr_quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE, related_name='quiz_lr')
lr_no = models.IntegerField(default=0)
lr_date = models.DateTimeField(max_length=255, default=now)
lr_billingparty = models.CharField(max_length=255, default=0) # supplier company name foreign key
invoice_no = models.IntegerField(default=0)
lr_declared = models.IntegerField(default=0)
ewaybill_no = models.IntegerField(default=0)
lr_quantity = models.IntegerField(default=0) # quantity
lr_weight = models.IntegerField(default=0) # weight
lr_invoice_date = models.DateTimeField(max_length=255, default=now)
lr_item_name = models.CharField(max_length=255, default=0) # said to contain
lr_consignor_name = models.CharField(max_length=255, default=0) # shipper company name
lr_consignor_address = models.CharField(max_length=255, default=0) # shipper company name
lr_consignor_contact_name = models.CharField(max_length=255, default=0) # shipper company name
lr_consignor_contact_phone = models.CharField(max_length=255, default=0) # shipper company name
lr_consignee_name = models.CharField(max_length=255, default=0) # shipper company name
lr_consignee_address = models.CharField(max_length=255, default=0) # shipper company name
lr_consignee_contact_name = models.CharField(max_length=255, default=0) # shipper company name
lr_consignee_contact_phone = models.CharField(max_length=255, default=0) # shipper company name
vehicle_no = models.CharField(max_length=255, default=0)
lr_vehicle_type = models.IntegerField(default=0)
driver_name = models.CharField(max_length=255, default=0)
driver_no = models.IntegerField(default=0)
urls.py
path('lr/<int:pk>/', suppliers.LrFormView, name='lr_form'),
Я иду на эту страницу по следующей кнопке:
<a href="{% url 'suppliers:lr_form' taken_quiz.quiz_id %}" class="btn btn-primary">Generate LR</a>
Я попытался поискать в Интернете и нашел бесчисленные примеры обновления записи в базе данных с помощью этого метода. Я не могу понять, что здесь происходит не так. Как мне отладить это?