Python 我对Django中views.py中产品类的changeStock方法有一个问题

Python 我对Django中views.py中产品类的changeStock方法有一个问题,python,django,Python,Django,我在Django做一个产品类是为了好玩,我遇到了一个关于更改产品变量qtyOnHand(用于检查该产品的库存量)的问题 目标是使用changeStock方法将产品的qtyOnHand更改指定数量,并重定向到主页,在主页上存储更新的qtyOnHand。如果取出库存,金额可以为负数;如果接收库存,金额可以为+ve。键入URL时出现的错误 不支持+:int和str的操作数类型,该操作数类型为 下面是我在views.py中的changeStock方法代码。这些评论是为了指导我解决这个问题的方法 # Ch

我在Django做一个产品类是为了好玩,我遇到了一个关于更改产品变量qtyOnHand(用于检查该产品的库存量)的问题

目标是使用changeStock方法将产品的qtyOnHand更改指定数量,并重定向到主页,在主页上存储更新的qtyOnHand。如果取出库存,金额可以为负数;如果接收库存,金额可以为+ve。键入URL时出现的错误 不支持+:int和str的操作数类型,该操作数类型为

下面是我在views.py中的changeStock方法代码。这些评论是为了指导我解决这个问题的方法

# Change the stock of a specific product by the specified amount.  A -ve number means that you are taking out product, 
# while a +ve one means you are receiving that product.
def changeStock(request, pk, amount):
    # We need the id of a specific product, plus we have to check if it's not found.
    product = get_object_or_404(Product, pk=pk)
    
    # Then we have to update its qtyOnHand.
    product.qtyOnHand = product.qtyOnHand + amount -> error occurs at this line
    
    # Then we have to save the changes to the database.
    product.save()
    
    # Then we have to redirect to the home page.
    return render(request, 'home.html', {'product': product})
这是my urls.py,用于存储我的URL。部分(?P-?\d+)用于包括正数和负数

from django.conf.urls import url
from django.contrib import admin
from inventories import views

urlpatterns = [
    url(r'^$', views.home, name='home'),
    url(r'^products/(?P<pk>\d+)/$', views.product_topics, name='product_topics'),
    url(r'^products/(?P<pk>\d+)/new/$', views.new_product, name='new_product'),
    url(r'^products/(?P<pk>\d+)/changeStock/(?P<amount>-?\d+)$', views.changeStock, name='home'),
    url(r'^admin/', admin.site.urls),
]

有人能告诉我这个错误是什么意思,以及我如何修复它吗?

您传递的参数在视图中被视为
string
。所以将它转换为
int
product.qtyOnHand
始终是模型中定义的int。因此,不要将
string
类型添加到
int
。请将
product.qtyOnHand=product.qtyOnHand+amount
更改为

product.qtyOnHand = product.qtyOnHand + int(amount)

我建议这样做。

您传递的参数在视图中被视为
string
。因此将其转换为
int
product.qtyOnHand
始终是模型中定义的int。因此,不要将
string
类型添加到
int
。请将
product.qtyOnHand=product.qtyOnHand+amount
更改为

product.qtyOnHand = product.qtyOnHand + int(amount)

我建议这样做。

product.qtyOnHand是一个整数。我相信问题是
product.qtyOnHand+amount
应该是
product.qtyOnHand+int(amount)
。默认情况下,传递给Django视图的所有参数都是stringsThanks,感谢您帮助我解决这个问题,mattyx17。我把它改为int(amount),它解决了所有问题。事实证明,这是向字符串添加int时的问题。product.qtyOnHand是一个整数。我认为问题在于
product.qtyOnHand+amount
应该是
product.qtyOnHand+int(amount)
。默认情况下,传递给Django视图的所有参数都是stringsThanks,感谢您帮助我解决这个问题,mattyx17。我把它改为int(amount),它解决了所有问题。这就是向字符串添加int时的问题。这意味着错误是由类型转换问题引起的。这意味着错误是由类型转换问题引起的。