Получение ValueError: Поле 'id' ожидало число, но получило 'favicon.ico'
Я следую этому учебнику YT https://www.youtube.com/watch?v=A_j5TAhY3sw,
на 4:23:18, когда он вводит все данные, он может отправить, но я получаю следующую ошибку:
ValueError: Поле 'id' ожидало число, но получило 'favicon.ico'. (На моей консоли VScode)
Метод запроса: POST (В моем браузере)
URL запроса:
Версия Django: 4.0.4 Тип исключения: IntegrityError Значение исключения:
Сбой ограничения NOT NULL: postions_postion.invoice_id Местоположение исключения: D:\Python\lib\site-packages\django\db\backends\sqlite3\base.py, строка 477, in execute
Все работает нормально, используя админку Django.
Это файл views.py
class AddPostionsFormView(FormView):
form_class = PositionForm
template_name = 'invoices/detail.html'
def get_success_url(self):
return self.request.path
Это model.py для позиций:
from django.db import models
from invoices.models import Invoice
# Create your models here.
class Postion(models.Model):#models.Models to inherit from django.db.models.Model
invoice = models.ForeignKey(Invoice,on_delete=models.CASCADE)
title = models.CharField(max_length=200)
description = models.TextField(blank=True,help_text="optional info")
amount=models.FloatField(help_text="in US $")
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Invoice : {self.invoice.number},postion title={self.title}"
Это sqlite ddb:
id title description amount created invoice_id
1 cleaning the kitchen 30 2022-05-25 07:56:38.750572 1
2 Tarnslating test clip 100 2022-05-28 05:26:46.370414 1
3 Test Test des 300 2022-06-01 06:53:08.567545 10
4 Good test des 222 2022-06-01 07:08:36.972521 10
Вот мега-ссылка, по которой я закончил курс: https://mega.nz/folder/EUoVhQbT#iN16PXAOcMv9Qr55MlUSIA
Я бы посоветовал поработать с конвертером путей <int:…>
[Django-doc], чтобы убедиться, что он соответствует только последовательности цифр: сейчас он также соответствует всем строкам, включая медиафайлы, так:
urlpatterns = [
path('', InvoiceListView.as_view(), name='main'), #with class based view add as.view
#main refers main.html
path('new/', InvoiceFormView.as_view(), name='create'),
path('<int:pk>/', AddPostionsFormView.as_view(), name='detail'),
path('<int:pk>/close/', CloseInvoiceView.as_view(), name='close'),
path('<int:pk>/update/', InvoiceUpdateView.as_view(), name='update'),
path('<int:pk>/delete/<int:position_pk>', InvoicePostionDeleteView.as_view(), name='Delete'),
]
Однако, возможно, лучше работать с префиксом invoice/
или чем-то еще, чтобы избежать путаницы.