【问题标题】:loading choices to choicefield in form in Django在 Django 中以表单形式将选项加载到选择字段
【发布时间】:2015-01-29 23:35:04
【问题描述】:

我无法在选择字段中加载选项,下面我将向您展示我的代码: 我使用这样的表格:

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”。但是当我尝试从视图创建一个新客户端时,choiceField 是空的,我如何将选项加载到choicefield?

谢谢!

【问题讨论】:

    标签: django forms choicefield


    【解决方案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')
    

    【讨论】:

    • 谢谢!这真的很有帮助
    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多