Django 泛型 ChoiceField
Django generic ChoiceField
我想要表格中的通用选项列表。
在里面
devices.py
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")
它 returns 我有 2 个这样的设备
(0, ('Erics phone')),
(1, ('mySensor001')),
在forms.py
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)
在这里,我会在设备标签中有一个选择列表,例如
Erics phone
mySensor001
但我得到 需要超过 1 个值才能解包 错误
你根本没有创建一个选项列表;您只需定义一个字符串 mes_choix
,其中包含一个选择描述。相反,您需要一个选择列表或元组,其中的每个条目都包含一个元组(id,名称)。
if devices_infos is not None:
mes_choix = [(i, device['name']) for i, device in enumerate(devices_infos['data'])]
我想要表格中的通用选项列表。 在里面 devices.py
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")
它 returns 我有 2 个这样的设备
(0, ('Erics phone')),
(1, ('mySensor001')),
在forms.py
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)
在这里,我会在设备标签中有一个选择列表,例如
Erics phone
mySensor001
但我得到 需要超过 1 个值才能解包 错误
你根本没有创建一个选项列表;您只需定义一个字符串 mes_choix
,其中包含一个选择描述。相反,您需要一个选择列表或元组,其中的每个条目都包含一个元组(id,名称)。
if devices_infos is not None:
mes_choix = [(i, device['name']) for i, device in enumerate(devices_infos['data'])]