问题描述
我的模型定义看起来像这样并且存在一对一关系
SELECT *
FROM rooms r
WHERE room_id NOT IN (SELECT room_id
FROM room_bookings
WHERE '2021/04/27' BETWEEN check_in_date AND check_out_date
OR '2021/04/30' BETWEEN check_in_date AND check_out_date)
AND room_size <> 'Double'
以下来自view_api.py,self.queryset基于Rocket.objects.all()
class Rocket(BaristaBase):
name = models.CharField(
max_length=256,blank=True,null=False,unique=True,)
my_volume = models.IntegerField(
default=0,)
class RocketMetrics(EspBase):
rocket = models.OneToOneField(
"Rocket",on_delete=models.CASCADE,null=True,related_name="metrics"
)
helpful_count = models.IntegerField(
default=0,)
上面使用 FloatField() 来转换输出会引发以下错误。
self.queryset = self.queryset.annotate(percent_unhelpful=Case(
When(total_actions=0,then=0.0),default=F('metrics__helpful_count') * 100.0 / F('total_actions'),output_field=FloatField()))
如果我有 F 函数只是引用基本模型的字段,例如 Rocket 模型本身中的 my_volume,这当然不会发生。例如,default=F('my_volume') * 100.0 / F('total_actions')。但仅适用于对基于 OneToOneField 的引用的 F 引用,如上所述。这是注释的错误或限制吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)