列表理解汇编中的错误结果

时间:2016-06-06 17:55:50

标签: python django

如果条件允许,我的列表理解结果会出错。我尝试了所有可能出错的提示。

po_list = [n for n in Material.objects.all() 
    if (((F('n.total_inventory') + F('n.total_po') - F('n.total_so'))) < F('n.min_quantity'))]

目前,它将始终提供Material模型的所有数据 如果我切换较大/较小的符号方向,则不提供数据

EDIT 我错误地认为代码是自我解释的。 正确的结果是只输出来自Material的值,这些值将满足这3个属性的条件计算((F(&#39; n.total_inventory&#39;)+ F(&#39; n.total_po&# 39;) - F(&#39; n.total_so&#39;))将小于F(&#39; n.min_quantity&#39;)只有那些行应该在po_list中列出

此代码是Django项目的一部分,django框架中的F是: F()对象表示模型字段的值。它可以引用模型字段值并使用它们执行数据库操作,而无需将它们从数据库中拉出到Python内存中。 https://docs.djangoproject.com/en/1.7/ref/models/queries/

我不能过滤这些值,因为它们是计算出的属性。

1 个答案:

答案 0 :(得分:1)

请勿使用F个对象并使用n变量:

po_list = [n for n in Material.objects.all() 
           if (n.total_inventory + n.total_po - n.total_so) < n.min_quantity]