使用Django,我有下面的工作示例来创建一个带有group选项的列表:
self.fields["crop"].choices = [( "First", ( ('1','aaa'), ('2','bbb'), ) ), ( "Second", ( ('3','ccc'), ) ), ]
第一种方法:我尝试使用硬方法使其动态化:
sub_item =''
grouped_items=''
for k in Field.objects.filter(farm=farm):
print (k.field_name )
for o in Crop.objects.filter(farming_year=farming_year, field=k ):
sub_item = sub_item + '('+ str(o.id) + ',"' +o.crop_name + '"),'
grouped_items= grouped_items + '("' + k.field_name + '", (' + sub_item + ')),'
sub_item=''
full_list_items= '[' + grouped_items + ']'
print (full_list_items)
self.fields["crop"].choices = full_list_items
print(full_list_items )
我总是会遇到以下错误: 没有足够的值进行解包(预期值为2,实际值为1)
第二种方法:为了测试我的代码,我从终端复制了print(full\u list\u items)的结果,并将其直接分配到裁剪列表,如下所示,然后它再次工作!!!你知道吗
self.fields["crop"].choices = [( "First", ( ('1','aaa'), ('2','bbb'), ) ), ( "Second", ( ('3','ccc'), ) ), ]
这里的问题是为什么我在使用第一种方法时不能得到所需的结果,而在使用第二种方法时却得到了所需的结果!!你知道吗
你在建立一个字符串,而不是元组列表。我不知道你为什么这么做。与所有这些字符串串联不同,您应该保持Python数据结构:
请注意,内部循环可以重写为列表理解,并通过使用反向关系进一步简化:
相关问题 更多 >
编程相关推荐