Encontré la respuesta en este ¿Cómo establecer opciones en dinámica con el campo de elección de Django?
maersu post tiene un alto voto en mi pregunta.
La salida de get_branch() es ["first_branch", "second_branch"]
django==1.11
python 3.6.0
forms.py
class FactoryPOSForm(forms.ModelForm): branch_name = forms.ChoiceField(choices=['aa', 'bb']) class Meta: model = FactoryPOS fields = [ 'branch_name', 'dealer_name', 'shop_name', 'factory', ] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['branch_name'].choices = get_branches()Error:
File "/Users/el/.pyenv/versions/eneos-factory/lib/python3.6/site-packages/django/forms/boundfield.py", line 250, in build_widget_attrs if widget.use_required_attribute(self.initial) and self.field.required and self.form.use_required_attribute: File "/Users/el/.pyenv/versions/eneos-factory/lib/python3.6/site-packages/django/forms/widgets.py", line 690, in use_required_attribute return use_required_attribute and first_choice is not None and self._choice_has_empty_value(first_choice) File "/Users/el/.pyenv/versions/eneos-factory/lib/python3.6/site-packages/django/forms/widgets.py", line 673, in _choice_has_empty_value value, _ = choice ValueError: too many values to unpack (expected 2) [22/Apr/2017 16:47:04] ERROR [django.server:124] "GET /admin/factories_pos/factorypos/add/ HTTP/1.1" 500 445135¿Dónde estoy extraño algo?
Desde doc, las opciones deben ser
Un iterable (p. ej., una lista o tupla) que consta de iterables de exactamente dos elementos (p. ej. [(A, B), (A, B) ...]) para usar como opciones para este campo. Si se proporciona, el widget de formulario predeterminado será un cuadro de selección con estas opciones en lugar del campo de texto estándar