我试图从一个queryset中获取一个值,但我一直得到这个错误,说'bool' object is not subscriptable
。
我有一个类似于tax_rate_fee = TaxRate.objects.filter(country=cartorder.country).exists()
的查询集,我正在检查查询集中是否存在特定的国家,然后我想从查询集中获取一个值并执行一些操作。
这是我的代码
tax_rate_fee = TaxRate.objects.filter(country=cartorder.country).exists()
if tax_rate_fee:
cartorderitem.vat = 5 * tax_rate_fee['rate']
这是税率费用模型
class TaxRate(models.Model):
country = models.CharField(max_length=200)
rate = models.IntegerField(default=5, help_text="Numbers added here are in percentage (5 = 5%)")
active = models.BooleanField(default=True)
1条答案
按热度按时间pxy2qtax1#
你得到错误'bool' object is not subscriptable的原因是queryset上的
exists()
方法返回一个布尔值,指示queryset中是否有任何记录匹配指定的条件。要从查询集中检索实际记录,需要使用
filter()
或get()
方法,而不是exists()
。此外,检索记录后,需要访问每条记录的rate
属性,而不是exists()
返回的布尔值。下面是如何修改代码的示例:在这段代码中,我们首先过滤
TaxRate
查询集,以检索与指定country
匹配的所有记录。然后我们检查是否有任何使用exists()
的记录。如果有,我们使用first()
检索第一条记录(假设只有一条匹配记录),并访问其rate
属性来执行计算。请注意,如果有多个匹配的记录,您可能需要使用不同的方法来检索相应的记录,例如
get()
或values()
。