Skip to main content
 首页 » 编程设计

python之如何在django中赋值

2024年08月30日37mate10pro

我在减去两个值时遇到问题。我只想成为这样 a = b - c

这是我的 handlers.py 中的代码

 def create(self, request):  
        if not self.has_model(): 
            return rc.NOT_IMPLEMENTED 
 
        attrs = self.flatten_dict(request.POST) 
 
        if attrs.has_key('data'): 
            ext_posted_data = SimplerXMLGenerator(request.POST.get('data')) 
            attrs = self.flatten_dict(ext_posted_data) 
 
        prod = Product.objects.get(id=attrs['id']) 
        prod_quantity = prod.quantity 
 
        quantity_order = attrs['quantity'] 
 
        sumOfQuantity = Booking.objects.filter(date_select=attrs['date_select']).aggregate(Sum('quantity') 
 
        prodAvailable = prod_quantity - sumOfQuantity 
 
        if prodAvailable = 0: 
            #select another date 
            return rc.NOT_HERE 
        if prodAvailable <= quantity_order: 
            return prodAvailable 
        else : 
            total = float(quantity_order) * prod.price 
            inst = self.model( 
                date_select = attrs['date_select'], 
                product_name = prod.name, 
                quantity = attrs['quantity'], 
                price = prod.price, 
                totalcost = total, 
                first_name = attrs['first_name'], 
                last_name = attrs['last_name'], 
                contact = attrs['contact'], 
                product = prod 
                           ) 
            inst.save() 
            return inst 

问题在 prodAvailable = prod_quantity - sumOfQuantity 我的问题是如何正确声明它?

提前致谢:p

这是我的回溯......

Traceback: 
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response 
  89.                     response = middleware_method(request) 
File "/usr/local/lib/python2.7/dist-packages/django/middleware/common.py" in process_request 
  67.             if (not _is_valid_path(request.path_info, urlconf) and 
File "/usr/local/lib/python2.7/dist-packages/django/middleware/common.py" in _is_valid_path 
  154.         urlresolvers.resolve(path, urlconf) 
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in resolve 
  342.     return get_resolver(urlconf).resolve(path) 
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in resolve 
  252.                     sub_match = pattern.resolve(new_path) 
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in resolve 
  250.             for pattern in self.url_patterns: 
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in _get_url_patterns 
  279.         patterns = getattr(self.urlconf_module, &quot;urlpatterns&quot;, self.urlconf_module) 
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in _get_urlconf_module 
  274.             self._urlconf_module = import_module(self.urlconf_name) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py" in import_module 
  35.     __import__(name) 
File "/home/agileone/workspace/bookproj/../bookproj/api/urls.py" in &lt;module&gt; 
  3. from api.handlers import * 
 
Exception Type: SyntaxError at /api/bookings 
Exception Value: invalid syntax (handlers.py, line 94) 

此外,当我尝试在我的 python shell 中执行此操作时......它是这样的:

>>> sumOfQuantity = Booking.objects.filter(date_select='2011-11-29').aggregate(Sum('quantity')) 
>>> print sumOfQuantity 
{'quantity__sum': 2} 
>>> prod_quantity = 1 
>>> prodAvailable = prod_quantity - sumOfQuantity 
Traceback (most recent call last): 
  File "<console>", line 1, in <module> 
TypeError: unsupported operand type(s) for -: 'int' and 'dict' 

请您参考如下方法:

如果您真的希望它看起来像a = b - c,那么您必须将您的分配更改为sumOfQuantity:

sumOfQuantity = Booking.objects.filter(date_select='2011-11-29').aggregate(Sum('quantity'))['quantity__sum']