Исключение Значение: Поле 'id' ожидало число, но получило ''. (Django)

Я пытался написать страницу добавления фотографии на Django, но получил ошибку. Я смотрел это видео на youtube, чтобы написать свой собственный проект.

Я уже написал python manage.py makemigrations, а затем python manage.py migrate. К сожалению, это не сработало.

Вот файл "view.py":

def addPhoto(request):
    categories = Category.objects.all()

    if request.method == 'POST':
        data = request.POST
        image = request.FILES.get('image')

        if data['category'] != 'none':
            category = Category.objects.get(id = data['category'])
        else:
            category = None


        photo = Photo.objects.create(
            title=Title,
            category=category,
            description=data['description'],
            image=image,
        )

        return redirect('index')

    context = {'categories':categories}
    return render(request, 'auctions/newlisting.html', context)

Вот файл "urls.py":

from django.urls import path

from . import views

urlpatterns = [
    path("", views.index, name="index"),
    path("login", views.login_view, name="login"),
    path("logout", views.logout_view, name="logout"),
    path("register", views.register, name="register"),
    path("newlisting", views.addPhoto, name="create_listing"),
    path('photo/<str:pk>/', views.viewPhoto, name='photo'),
]

Вот файл "models.py":

class Category(models.Model):
    category = models.CharField(max_length = 30)

    def __str__(self):
        return f'{self.category}'
class Photo(models.Model):
    class Meta:
        verbose_name = 'Photo'
        verbose_name_plural = 'Photos'

    title = models.CharField(max_length = 60,)
    category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True, blank=True)
    image = models.ImageField(null=False, blank=False)
    description = models.TextField()

    def __str__(self):
        return self.description

Вот файл "newlisting.html":

{% extends "auctions/layout.html" %}

{% block body %}
<div class="m-5">
    <div class="container">

          <div class="row justify-content-center">
              <div class="col-md-6">
                  <h2>Create Listing</h2>
                  <a href="{% url 'index' %}" class="btn btn-dark my-3">Go Back</a>
                  <div class="card">


                      <form method='POST' action="" enctype="multipart/form-data">
                          {% csrf_token %}

                          <div class="form-group m-3">
                              <label>Title</label>
                              <input required name="Title" type="text" placeholder="Enter a title"
                                  class="form-control">
                          </div>

                          <div class="form-group m-3">
                              <label>Description</label>
                              <input required name="description" type="text" placeholder="Enter a description"
                                  class="form-control">
                          </div>

                          <div class="form-group m-3">
                              <label>Select a category</label>
                              <select name="category" class="form-control">
                                  <option value='none'>Select a category...</option>

                                  {% for Category in categories %}
                                    <option value='{{category.id}}'>{{Category.category}}</option>
                                  {% endfor %}
                              </select>
                              {{form.category}}
                          </div>

                          <div class="form-group m-3">
                              <label>Upload image</label>
                              <input required name="images" type="file" multiple class="form-control-file">
                          </div>

                          <button type='submit' class="btn btn-primary m-3">Submit</button>

                      </form>
                  </div>
              </div>
          </div>
      </div>
</div>

{% endblock %}

помогите пожалуйста!

Сначала в urls.py используйте / конец всех url

файлurls.py

from django.urls import path
from . import views

urlpatterns = [
    path('login/', views.loginUser, name="login"),
    path('logout/', views.logoutUser, name="logout"),
    path('register/', views.registerUser, name="register"),

    path('', views.gallery, name='gallery'),
    path('photo/<str:pk>/', views.viewPhoto, name='photo'),
    path('add/', views.addPhoto, name='add'),
]

а также этот код уже опубликован на GitHub так что просто сравните оба кода

Я также рекомендую не использовать id и использовать pk. Когда вы хотите получить query, потому что если вы измените имя pk на вашем models.py, вам не нужно менять его в файле представления

Либо просто используйте код на GitHub, либо измените его по своему усмотрению

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