代码之家  ›  专栏  ›  技术社区  ›  marcelo.delta

如何在列表中使用modelChoiceField,并在选项和值选项e select中使用相同的值?

  •  0
  • marcelo.delta  · 技术社区  · 7 年前

    如何在列表中使用modelChoiceField,选项和值选项e select中的值相同?

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

    模型

    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>
    
    0 回复  |  直到 7 年前
        1
  •  0
  •   marcelo.delta    7 年前
    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)