【问题标题】:Updating record in Database using Django使用 Django 更新数据库中的记录
【发布时间】:2022-11-02 18:58:08
【问题描述】:

我正在尝试使用 Django 更新数据库中的记录,但它再次添加了相同的记录。我该如何解决?代码如下。

def update(request, id):
    book = tblbook.objects.get(id=id)
    form = tblbook(BookID = book.BookID, BookName=book.BookName, Genre=book.Genre,Price=book.Price) 
    form.save()
    return redirect("/show")

【问题讨论】:

    标签: python mysql django database


    【解决方案1】:

    您的对象在书中,因为您使用了 get() 方法 现在应该做这样的事情

    object_name.column_name = "Your value that you want to save"
    

    根据你的快照,它会是这样的

    book.BookID = "1"
    book.BookName = "Any book name"
    book.Genre = "Any genre"
    book.Price = "Price of the book"
    book.save()
    

    您也可以使用 update() 方法和 filter() 方法,它看起来像这样

    book = tblbook.objects.filter(id=id).update(BookID = "123", BookName="Any book name", Genre= "any genre", Price="price")
    

    【讨论】:

    • 我如何从表单中获取这些数据?
    • 表单中的数据将在您的请求对象中。因此,您可以在 from "] 的输入字段中执行 object_name.column_name = request.data["name 键,例如:book.BookID = request.data['book_name'] 等等。
    【解决方案2】:

    您的代码正在将新记录插入数据库。 假设您想更新书名,那么下面的代码可能会有所帮助-

    book = tblbook.objects.get(id=id)
     
    book.BookName = "some book name"
    
    book.save()
    

    同样,您也可以更新其他字段

    【讨论】:

    • 我明白了,但我不想手动插入值,我正在尝试从表单中获取数据
    • @Naumankhan,您可以从表单中获取值,例如- request.POST.get(<name of the field>)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多