【问题标题】:How can I use the ModelChoiceField in a list with the same values ​in the OPTION and VALUE OPTION e select?如何在 OPTION 和 VALUE OPTION e 选择中使用具有相同值的列表中的 ModelChoiceField?
【发布时间】:2019-02-19 22:53:55
【问题描述】:

如何使用列表中的ModelChoiceField在OPTION和VALUE OPTION e中选择相同的值?

我需要queryset返回选择列表和VALUE相同的值的选项

型号

class Produto(models.Model):

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

    nome = models.CharField(max_length=255)
    referencia = models.CharField(max_length=50)

    def __str__(self):
        return self.nome + ' - ' + self.referencia

表格

class FormItem(forms.Form):

        produto = forms.ModelChoiceField(queryset=None, label='Produto', widget=forms.Select(attrs={'placeholder': 'Produto', 'class': 'input select2'}))

        def __init__(self, *args, **kwargs):
            super(FormFaturaItem, self).__init__(*args, **kwargs)
            self.fields['produto'].queryset = Produto.objects.all()

表单结果

<select>
<option value="dd3e2aff-924d-4945-9929-3d37b81b3ebb">KIT MATERNIDADE  - 9049</option>
</select>

预期结果

 <select>
    <option value="KIT MATERNIDADE  - 9049">KIT MATERNIDADE  - 9049</option>
    </select>

【问题讨论】:

  • 选项 value 应该是该模型的主键 (uuid)。您是否尝试过将FormItem 更改为forms.ModelForm?如果这些都不起作用,您能否详细说明您想要完成的工作?
  • 我希望在“预期结果”中描述结果
  • 是的,但为什么呢?你能分享一下这个表单正在发布的观点吗?
  • 表格不是帖子。这是在提交表单之前加载项目列表的初始日期。此列表是从数据库中加载的。

标签: python django python-3.x django-forms


【解决方案1】:
produto = forms.ChoiceField(choices=(), label='Produto', widget=forms.Select(attrs={'placeholder': 'Produto', 'class': 'input select2'}))

def __init__(self, *args, **kwargs):
    super(FormItem, self).__init__(*args, **kwargs)

    a = []
    for i in Produto.objects.all():
        a.append((i.nome, i.nome))

    self.fields['produto'].choices = tuple(a)

【讨论】:

    猜你喜欢
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多