Python 按相关模型的注释字段过滤
我正在动态计算一个字段(=未存储在数据库中),需要根据该字段过滤相关模型 我的问题如下:Python 按相关模型的注释字段过滤,python,django,Python,Django,我正在动态计算一个字段(=未存储在数据库中),需要根据该字段过滤相关模型 我的问题如下: 有什么想法吗?我如何过滤计算出的相关字段 我想了解Django如何处理查询(例如,它是否/如果/何时返回查询集并对其进行操作,或者它是否直接命中数据库)。如果有人能向我指出相关文件,那将不胜感激 其他信息 我的模型(Models.py) 我的模型管理器和查询集管理器(Managers.py) 我想说的是 Stack.objects.get_calc() 因为“y_min”和“y_max”很容易改变,所以
Stack.objects.get_calc()
- 因为“y_min”和“y_max”很容易改变,所以我想保持不变 “y”作为计算字段。然而,我在其他方面也需要“y” 计算,这似乎是不可能的,因为我得到 相关字段的查找无效:y
- 我已经从属性(@property in model)中移动了字段 对于自定义模型管理器,这似乎也没有帮助。信息技术 在我看来,filter和F()对象直接命中数据库 没有返回查询集,但我甚至无法确认这一点,因为我 未能找到相关文档
- 另外,我不能将模型导入.managers.py文件 因为这将导致循环引用
class StackQuerySet(models.QuerySet):
def calc(self,**kwargs):
valid_parts = self.filter(
build__parts__y__lte=F('height'),
) \
.annotate(
total_built_parts_volume = Sum(F('build__parts__volume'))
)
return valid_parts
class StackManager(models.Manager):
def get_queryset(self):
return StackQuerySet(self.model, using=self._db)
class PartManager(models.Manager):
def get_queryset(self):
return super().get_queryset()\
.annotate(
x = F('x_max') + F('x_min'),
y = F('y_max') + F('y_min'),
z = F('z_max') + F('z_min')
)
Stack.objects.get_calc()