首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django通用ChoiceField

Django通用ChoiceField
EN

Stack Overflow用户
提问于 2018-03-07 16:34:42
回答 1查看 171关注 0票数 0

我想以我的形式列出一个通用的选择列表。在devices.py

代码语言:javascript
复制
def get_devices():
    api_url = api_url_base
    response = requests.get(api_url,headers=headers)
    if response.status_code == 200:
        return json.loads(response.content.decode('utf-8'))
    else:
        return None

#######################################
devices_infos = get_devices()

if devices_infos is not None:
    print('Voici les devices: ')
    for each in devices_infos['data']:
        device_name =  (each['name'])
        for k in range(len(devices_infos['data'])):
            mes_choix = ("(%s, ('%s'))," % (k,device_name ))

else:
    print("[!] Request failed")

它会把我的两个设备还给我

代码语言:javascript
复制
(0, ('Erics phone')),
(1, ('mySensor001')),

forms.py

代码语言:javascript
复制
from django import forms
from alertes.devices import *
class NameForm(forms.Form):
    nom_alerte = forms.CharField(label='Nom Alerte', max_length=100)
    devices = forms.ChoiceField(label='Liste devices', choices=mes_choix, required=False)
    user_mail = forms.EmailField(label = 'Email a envoyer', max_length=100)

在这里,我将在设备标签中列出一个选择列表,如

代码语言:javascript
复制
Erics phone
mySensor001

但是我得到了需要超过一个值才能解包错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-08 09:37:41

您根本没有创建一个选项列表;您只需定义一个字符串mes_choix,其中包含一个选项描述。相反,您需要一个或多个选择元组,其中的每个条目都包含一个元组of (id,name)。

代码语言:javascript
复制
if devices_infos is not None:
    mes_choix = [(i, device['name']) for i, device in enumerate(devices_infos['data'])]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49156945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档