1

__future__ import division操作にdjangoを使用しようとしていますが、views.pyでは機能しません。

django シェルの下では、python シェルと同じです:

>>> 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 はクエリセットです。

どんな助けでも!!!

4

1 に答える 1

2

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
于 2013-07-21T22:47:33.240 に答える