我建议你使用list-comprehension:
你可以这样做:
output = store_details([value for fieldname, value in form.data.items() if not value == None])
或者(你可以执行form.data.values()来只检索字典的值)
output = store_details([value for value in form.data.values() if not value == None])
您还可以存储list-comprehension的值并传递它:
l = [value for value in form.data.values() if not value == None]
output = store_details(l)
EDIT : 该错误是因为None已被写为值中的字符串,而不是对象,因此如果子句没有捕获它 .
>>> a= dict([('store_name', 'None'), ('store_type', 'store_type'), ('store_location', 'store_location'), ('csrf_token', 'ImI0MzQyYzcwZDk5NTVmMGQxMWY5YTk3NDhmNTNkNzJmMjQ5NWIzZTIi.Dtllqg.-SXYDYkBmQiPjSmo01VnDgSbZrE')])
>>> del a['csrf_token']
>>> a
{'store_name': 'None', 'store_type': 'store_type', 'store_location': 'store_location'}
>>> [i for i in a.values() if not i == 'None']
['store_type', 'store_location']
>>>
如果您更喜欢使用自己的代码,请进行以下更改:
l = []
a = form.data
del a['csrf_token'] # token field is removed
for fieldname, value in a.items():
if value is not 'None':
l.append(value)
print(l)
output = store_details(*l)