我有一个for循环,它返回一个值或None,具体取决于所选的字段 .
For Loop:
for fieldname, value in form.data.items():
if value is not None:
print(value)
下面给出了for循环的print语句的输出:
store_name
None
store_location
None
我试图将上述循环语句的输出传递给函数,如下所示:
output = store_details() <<-- arguments to this function to only include non None items obtained from the above for loop statement
在上面的示例中,只应将 store_name
和 store_location
作为参数传递 . 我怎么能只传递 non None 项作为参数?请注意列表参数每次都可能不同,因此我尝试构建此函数,使store_details函数每次只传递非None值 .
更新:
下面给出的是我试图执行的循环 . 如果选择了所有字段,则此工作正常(页面中有5个字段,用户可以从中选择) .
l = []
for fieldname, value in form.data.items():
if value is not None:
l.append(value)
print(l)
p = l[:-1]
output = store_details(*p)
如果未选择任何字段,则返回抛出的“无”
psycopg2.ProgrammingError: column "none" does not exist in table
2 回答
我建议你使用list-comprehension:
你可以这样做:
或者(你可以执行form.data.values()来只检索字典的值)
您还可以存储list-comprehension的值并传递它:
EDIT : 该错误是因为None已被写为值中的字符串,而不是对象,因此如果子句没有捕获它 .
如果您更喜欢使用自己的代码,请进行以下更改:
实际上你可以通过多种方式实现这一点 . 一个是字典理解:
UPDATE 我've included the '无'检查并排除csrf_token . 请使用
and
运算符,而不是or
.