如何使用:从 __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__ 进口如何在幕后工作

__future__ 模块在 Python 2.7 中如何工作? [复制]

使用__future__实现从python2.7到python3.x的过渡

from __future__ import print_function的使用

为啥使用 from __future__ import print_function 会破坏 Python2 样式的打印? [关闭]

python之使用__future__(解决版本不同,不兼容问题)