загрузка вариантов в поле выбора в форме в Django

я не могу загрузить варианты в поле выбора, ниже я покажу вам свой код: я использую такую ​​​​форму:

class ClientesForm(forms.ModelForm):
    nombre = forms.CharField( help_text="Nombre")
    apellido = forms.CharField(help_text="Apellido")
    ci = forms.IntegerField(help_text="CI")
    estado = forms.ChoiceField(help_text="Estado")

    class Meta:
        model=Clientes
        fields = ('nombre', 'apellido', 'ci', 'estado')

такая модель:

class Clientes(models.Model):
    nombre = models.CharField(max_length=20)
    apellido = models.CharField(max_length=20)
    ci = models.IntegerField(max_length=10, unique=True, default=0)

    ESTADO = Choices('Activo', 'Inactivo', 'Deudor')
    estado = models.CharField(choices=ESTADO, default=ESTADO.Activo, max_length=20)

    def __unicode__(self):
        return self.nombre

и представление для создания новых клиентов, например:

def nuevo_cliente(request):
    if request.method == 'POST':
        form = ClientesForm(request.POST)

        if form.is_valid():
            form.save()

            return HttpResponseRedirect('/home')
        else:
            print form.errors
    else:
        form = ClientesForm()

    return render(request, 'nuevo_cliente.html', {'form':form})

дело в том, что когда я создаю нового клиента из панели администратора, я могу выбрать, является ли клиент «Activo», «Inactivo», «Deudor». но когда я пытаюсь создать нового клиента из представления, поле выбора пусто, как мне загрузить варианты в поле выбора?

Спасибо!


person Gabo    schedule 29.01.2015    source источник


Ответы (1)


Если вы определяете поле выбора в классе формы, вы должны предоставить аргумент choices:

class ClientesForm(forms.ModelForm):
    ...
    estado = forms.ChoiceField(help_text="Estado", choices=Clientes.ESTADO)

Но зачем вы переопределяете поля модели в форме? Ненужно:

class ClientesForm(forms.ModelForm):
    class Meta:
        model=Clientes
        fields = ('nombre', 'apellido', 'ci', 'estado')
person catavaran    schedule 29.01.2015
comment
Спасибо! это было действительно полезно - person Gabo; 30.01.2015