Я пытаюсь реализовать опцию выбора в models.py Страны, которые могут быть выбраны пользователем, но я не могу правильно их отобразить
Следуя примеру, приведенному в документации Neomodel, я не могу отобразить варианты в моей форме.
class Person(StructuredNode):
SEXES = {'F': 'Female', 'M': 'Male', 'O': 'Other'}
sex = StringProperty(required=True, choices=SEXES)
используя этот пример, я получаю сообщение об ошибке при выполнении Django.
packages/django_neomodel/__init__.py", line 122, in get_choices
for choice, __ in choices:
ValueError: not enough values to unpack (expected 2, got 1)
Изменение SEXES и указание "FF", "MM" и т. Д. Позволит серверу работать, но значения отображаются как
<option value="F">F</option>
<option value="M">M</option>
<option value="O">O</option>
Я использовал следующий код в моделях.
COUNTRY_CODE1=[('AF', 'Afghanistan (+93)'), ('AL', 'Albania (+355)'), ('DZ', 'Algeria')]
...
ind_nationality = StringProperty(max_length=2,choices=COUNTRY_CODE1,label='Nationality')
Когда это заполняется в браузере, генерируется следующее.
<option value="A">F</option>
<option value="A">L</option>
<option value="D">Z</option>
models.py
class Person(DjangoNode):
uid_person = UniqueIdProperty()
ind_name = StringProperty(max_length=100 , label='Enter your First Name')
ind_last_name = StringProperty(max_length=100,null=True, label='Last Name')
ind_nationality = StringProperty(max_length=2,choices=COUNTRY_CODE1,label='Nationality')
forms.py
class PersonRegForm (ModelForm):
class Meta:
model=Person
fields = ['ind_name','ind_last_name', 'ind_nationality']
widgets = {
'ind_name' : forms.TextInput(attrs={'size':50}),
'ind_last_name' : forms.TextInput(attrs={'size':50}),
'ind_nationality' : forms.Select(),
}
app_label = 'reg'
class PersonRegView(generic.FormView):
template_name='reg/personreg.html'
form_class=PersonRegForm
success_url = 'index'
Я ожидаю следующего результата
<option value="AF"></option>
1 ответ
Когда я сделал выбор полей, я использую поле под названием ChoiceField
, который принимает список или кортеж кортежей.
class Person(StructuredNode):
SEXES = (
('F', 'Female'),
('M', 'Male'),
('O', 'Other'),
)
sex = models.ChoiceField(required=True, choices=SEXES)
https://docs.djangoproject.com/en/2.1/ref/forms/fields/ https://docs.djangoproject.com/en/2.1/ref/models/fields/
Я не уверен, как работает Neomodel, но именно так я настроил его в своем проекте django.