如何使用:从 __future__ 使用 django 导入部门
Posted
技术标签:
【中文标题】如何使用:从 __future__ 使用 django 导入部门【英文标题】:how to use: from __future__ import division with django 【发布时间】:2013-07-20 12:14:37 【问题描述】:我正在尝试将__future__ import division
与 django 一起用于我的操作,但它在我的 views.py 中不起作用。
在 django shell 下它与 python shell 非常相似:
>>> from __future__ import division
>>> result = 37 / 3
>>> result
12.333333333333334
>>>
django views.py 中的相同内容在我尝试使用时不起作用。
error message: unsupported operand type(s) for /: 'int' and 'instancemethod'
views.py:
from __future__ import division
def show_product(request, product_slug, template_name="product.html"):
review_total_final = decimal.Decimal('0.0')
review_total = 0
product_count = product_reviews.count # the number of product rated occurences
if product_count == 0:
return review_total_final
else:
for product_torate in product_reviews:
review_total += product_torate.rating
review_total_final = review_total / product_count
return review_total_final
return review_total_final
models.py:
class ProductReview(models.Model):
RATINGS =((5,5),.....,)
product = models.ForeignKey(Product)
rating = models.PositiveSmallIntegerField(default=5, choices=RATINGS)
content = models.TextField()
product_reviews 是一个查询集。
任何帮助!!!
【问题讨论】:
你能在你的views.py中显示用法吗? views.py def show_product(request, product_slug, template_name="product.html"): review_total_final = decimal.Decimal('0.0') review_total = 0 product_count = product_reviews.count #产品数量如果 product_count == 0 的评分出现:返回 review_total_final 其他:对于 product_reviews 中的 product_torate:review_total += product_torate.rating review_total_final = review_total / product_count #review_total_final= Ratestar.objects.filter(rate__gte = F(review_total) / F(product_count)) 返回review_total_final 返回 review_total_final 有很多错误。 .count 可能应该是 .count(),可能与 .rating 和 .rating() 相同,但缩进真的很时髦,说不出来。 这是 count 不是 count() ,在说很多错误之前尝试一下。好的 能否请您展示您的 product_review 模型?rating
字段的类型是什么?
【参考方案1】:
from __future__ import division
与此无关;您正在尝试将值除以方法本身,而不是首先调用该方法以获得正确的操作数。比较和对比:
>>> class X(object):
... def count(self):
... return 1
...
>>> x = X()
>>> 1 / x.count
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /: 'int' and 'instancemethod'
>>> 1 / x.count()
1
【讨论】:
以上是关于如何使用:从 __future__ 使用 django 导入部门的主要内容,如果未能解决你的问题,请参考以下文章
__future__ 模块在 Python 2.7 中如何工作? [复制]
使用__future__实现从python2.7到python3.x的过渡
from __future__ import print_function的使用
为啥使用 from __future__ import print_function 会破坏 Python2 样式的打印? [关闭]