![](/img/trans.png)
[英]DJANGO:How to remove empty QuerySet from the list of QuerySet
[英]How to remove MSSQL decimal declaration from QuerySet list?
我有一个排序算法,用于与父母及其子女一起排序。 这是一个工作示例: 教程点编码地面 。
但是,此工作示例具有预定义的“已清除”列表。 但是,与该预定义列表的唯一区别是,我已从列表中删除了“十进制声明”(或任何称为“十进制声明”)。 这是脏列表和干净列表的示例。
脏物清单:
item_list = [
{...},
{'qmaQuoteAssemblyID': 0, 'qmaLevel': Decimal('1'), 'qmaParentAssemblyID': 0, 'qmaPartShortDescription': '12U x 600 x 650 Professional Rack', 'qmaPartID': 'RACK S9', 'qmaQuantityPerParent': Decimal('1.00000')},
{...}]
清除清单:
item_list = [
{...},
{'qmaQuoteAssemblyID': 0, 'qmaLevel': 1, 'qmaParentAssemblyID': 0, 'qmaPartShortDescription': '12U x 600 x 650 Professional Rack', 'qmaPartID': 'RACK S9', 'qmaQuantityPerParent': 1.00000},
{...}]
从两个示例中都可以看到, 脏列表的DecimalField值周围有Decimal('somevalue')
。 但是,通过清除列表,它已被删除,从而可以毫无问题地通过算法。
当我通过算法运行脏列表时 ,出现以下错误:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
NameError: name 'Decimal' is not defined
在我的Django项目中,该列表只是空的。
这是有道理的,因为未定义Decimal。 但是我的环境似乎将Decimal('somevalue')
当作方法/函数,而不是原始的十进制值。 我相信这个“垃圾”是在我的MSSQL数据库或其他一些我与Django项目并行运行的Django程序周围添加的值。
我目前这样创建列表:
con1 = Q(qmaQuoteID=quote_id)
con2 = Q(qmaQuoteLineID=quote_line_id)
query = QuoteAssemblies.objects.filter(con1 & con2
).order_by('qmaQuoteAssemblyID'
).values('qmaQuoteAssemblyID', 'qmaParentAssemblyID', 'qmaLevel', 'qmaPartID', 'qmaPartShortDescription', 'qmaQuantityPerParent')
item_list = list(query)
有没有一种方法可以清除列表以从值中删除Decimal('somevalue')
,以便它正确地通过我的算法?
避免
raceback (most recent call last):
File "<stdin>", line 2, in <module>
NameError: name 'Decimal' is not defined
只是
from decmal import Decimal
如果仍然无法解决,并且想将小数转换为int或字符串,
for item in item_list:
item['qmaLevel'] = int(item['qmaLevel'])
# item['qmaLevel'] = str(item['qmaLevel'])
我发现这是处理Decimal('X')
作为方法/函数被撤销的最好方法。 我只是将Decimal
声明为一个类,并确保python仅将其视为值,并且实质上无视周围的垃圾:
class Decimal:
def __init__(self, value):
self.value = value
def value(self):
print(self.value)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.