Python 我对Django中views.py中产品类的changeStock方法有一个问题
我在Django做一个产品类是为了好玩,我遇到了一个关于更改产品变量qtyOnHand(用于检查该产品的库存量)的问题 目标是使用changeStock方法将产品的qtyOnHand更改指定数量,并重定向到主页,在主页上存储更新的qtyOnHand。如果取出库存,金额可以为负数;如果接收库存,金额可以为+ve。键入URL时出现的错误 不支持+:int和str的操作数类型,该操作数类型为 下面是我在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
# 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时的问题。这意味着错误是由类型转换问题引起的。这意味着错误是由类型转换问题引起的。