Как обновить элемент в django без создания нового элемента?

Я пытаюсь обновить элемент (книгу), имеющийся в базе данных, Хотя я добавил экземпляр, чтобы новый элемент не создавался, а вместо этого элемент только обновлялся, но, к сожалению, это не работает так, как должно быть, Вместо обновления элемента создается новый элемент, я что-то упустил?

models.py

class Book(models.Model):
    book_name = models.CharField(max_length= 100)
    author_name = models.CharField(max_length=100)
    publisher = models.CharField(max_length=100)
    published_on = models.DateTimeField(blank=True, null=True)
    Language = models.CharField(max_length=100)
    image = models.ImageField(blank = True, upload_to='images/')
    created = models.DateTimeField(auto_now_add = True)
    
    def __str__(self):
        return self.book_name
    
    @property
    def imageURL(self):
        try:
            url = self.image.url
        except:
            url = " "
        return url
views.py

def book_register(request):
    if request.method == 'POST':
        form = BookForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return redirect('/')
        else :
            return render(request, 'crud_operation/book_form.html', {'form': form}) 
    else:
        form = BookForm()
        context = {'form':form}
        return render(request,'crud_operation/book_form.html',context)


def book_update(request,pk):
    book = Book.objects.get(id=pk)
    form = BookForm(instance = book)
    if request.method == 'POST':
        form = BookForm(request.POST, request.FILES, instance=book)
        if form.is_valid():
            form.update()
            return redirect('/')
    context = {'form':form}
    return render(request, 'crud_operation/book_form.html',context)

urls.py

urlpatterns = [
    path('create-book/',views.book_register, name = 'books'),
    path('update-book/<int:pk>/',views.book_update, name = 'book_update'),
]
forms.py

class BookForm(ModelForm):
    class Meta:
        model = Book
        fields = '__all__'
        widgets = {
            'published_on': DateInput(attrs={'type': 'date'})
        }
Вернуться на верх