【发布时间】:2012-09-30 14:53:12
【问题描述】:
我的 models.py 中有这个管理器
class ItemManager(models.Manager):
def get_fee(self):
from django.db import connection
cursor = connection.cursor()
cursor.execute("""
SELECT fee
FROM item
WHERE itemID = %d AND item.type = %d
""", [self.myItemID, self.myItemType])
fee = cursor.fetchone()
return fee
和类
Sample(models.Model):
sampleID = models.AutoField(primary_key=True)
itemID = models.ForeignKey(Item)
item.type = models.ForeignKey(Item)
...
def save(self, *args, **kwargs):
is_new = self.pk is None
super(Sample, self).save(*args, **kwargs)
if is_new:
cd.amount = MonthlyFeeManager()
cd.save()
然后它会产生错误:
Cannot convert <myapp.models.ItemManager object at 0xa6f07ec> to Decimal
一般来说,我想在管理器中执行一个 RAW SQL 查询并使用它从查询中获取结果。我尝试搜索,但大多数返回是元组,而不是值。
【问题讨论】:
-
您在滥用管理器。事实上,所有这些代码看起来都很奇怪。这是您的实际代码还是通用示例?关系看起来不正确,属性名称也不正确
-
这只是一个例子。你可以忽略我上面的代码。我只是希望 cd.amount 在执行 sql 查询时从不同的表中获取一个值(或者可能有另一种方式)。
-
是的,但如果您的代码示例甚至无法远程反映您在做什么,我们将无法帮助您。您可以简单地在保存方法中进行查询并将值分配给
amount。但这种方法都是您的应用程序的猜测。