首页 > 解决方案 > UpdateView 不填充数据列表 html 输入和其他字段

问题描述

我有一个 UpdateView,它可以正确更新每个字段,除了那些通过“datalist”html5 填充的字段,如“cliente”、“fecha”和“isin”。

问题是,我怎样才能像其他字段一样填写这些信息?我究竟做错了什么?你能给我一些指导吗?

views.py

class ordenes_updatea_orden(UpdateView):
    model = rfi_tsox
    form_class = IngresoOrdenesRFIModelForm
    template_name = template_name = 'ordenes/rfi-ingreso-ordenes-modelform.html'
    success_url = reverse_lazy('listado_ordenes')
Modelform

class IngresoOrdenesRFIModelForm(ModelForm):
    def __init__(self,*args, **kwargs):
        super(IngresoOrdenesRFIModelForm,self).__init__(*args, **kwargs)
        self.fields['fecha_ingreso'].widget.attrs = {'class':'form-control','type':'date'}
        self.fields['orden_tipo'].widget.attrs = {'class':'form-control'}
        self.fields['nominales'].widget.attrs = {'class':'form-control'}
        self.fields['precio'].widget.attrs = {'class':'form-control'}
        self.fields['papel'].widget.attrs = {'class':'form-control'}
        self.fields['rating'].widget.attrs = {'class':'form-control'}
        self.fields['duracion'].widget.attrs = {'class':'form-control'}
        self.fields['payment_rank'].widget.attrs = {'class':'form-control'}
        self.fields['ytm'].widget.attrs = {'class':'form-control'}
        self.fields['sector'].widget.attrs = {'class':'form-control'}
        self.fields['notas'].widget.attrs = {'class':'form-control'}
        self.fields['pais'].widget.attrs = {'class':'form-control'}
        self.fields['sector'].widget.attrs = {'class':'form-control'}
        self.fields['cliente'].widget.attrs = {'class':'form-control'}
    cliente = forms.ChoiceField(choices = [(x.fondo,x.fondo) for x in clientes_rfi.objects.all()])
    fecha_ingreso = forms.DateField(widget=forms.DateInput(attrs={'class':'form-control','type':'date'}),initial = datetime.date.today)
    orden_tipo = forms.ChoiceField(choices = [('cliente compra','cliente compra'),('cliente vende','cliente vende')])
    isin = forms.ChoiceField(choices=listado_isin(),required=False)
    papel = forms.CharField(required=False)
    rating = forms.MultipleChoiceField(choices = [('Todos','Todos'),('IG','IG'),('HY','HY')],initial='Todos',required=False)
    duracion = forms.MultipleChoiceField(choices=[('Toda la curva','Toda la curva'),('x<=3','x<=3'),('3<x<=5','3<x<=5'),('x>5','x>5')],initial='Toda la curva',required=False)
    nominales = forms.CharField(required=False)
    sector = forms.MultipleChoiceField(choices=lista_sector(),initial='Todos',required=False)
    precio = forms.CharField(required=False)
    payment_rank = forms.MultipleChoiceField(choices=lista_paymentRank(),initial='Todos',required=False)
    ytm = forms.MultipleChoiceField(choices=[('Todos','Todos'),('0 a 100','0 a 100'),('101 a 200','101 a 200'),('201 a 300','201 a 300'),('301 a 400','301 a 400'),('sobre 400','sobre 400')],initial='Todos',required=False)
    notas = forms.CharField(required=False)
    pais = forms.MultipleChoiceField(choices = listado_cntry(),initial='Todos',required=False) 
    class Meta:
        model = rfi_tsox
        fields = '__all__'
        fields = ('cliente','fecha_ingreso','orden_tipo','nominales','precio','papel','rating','duracion','payment_rank','ytm',
        'sector','notas','pais','sector')
        
    def clean_nominales(self):
        nominales = self.cleaned_data['nominales']
        nominales = nominales.replace('.','').replace(',','.')
        return nominales

模型.py

class rfi_tsox(models.Model):
    fecha_ingreso = models.DateField()
    trader = models.TextField(null=True,blank=True) 
    orden_tipo = models.TextField(null=True,blank=True)
    isin = models.TextField(null=True,blank=True)
    papel = models.TextField(null=True,blank=True)
    cliente = models.TextField(null=True,blank=True)
    rating = ArrayField(models.CharField(max_length=100),null=True,blank=True)
    pais = ArrayField(models.CharField(max_length=100),null=True,blank=True)
    duracion = ArrayField(models.CharField(max_length=100),null=True,blank=True)
    nominales = models.BigIntegerField(null=True,blank=True)
    sector = ArrayField(models.CharField(max_length=100),null=True,blank=True)
    precio = models.DecimalField(max_digits=6,decimal_places=3,null=True,blank=True)
    payment_rank = ArrayField(models.CharField(max_length=100),null=True,blank=True)
    ytm = ArrayField(models.CharField(max_length=100),null=True,blank=True)
    notas = models.TextField(null=True,blank=True)
    status = models.TextField(null=True,blank=True)

有问题的图片

标签: djangodjango-2.2

解决方案


您是否尝试过通过上下文传递它并使用 ORM 操作员访问它

视图.py

def someFunc(request, Argument):
    ...
    some logic
    ...
    InfoDelCliente=rfi_tsox.objects.get(id = Argument)
    context={
             'ElCliente':InfoDelCliente
            }
    return render(request, 'some.html', context)

HTML

 <form action="" method="POST" class="">
            {%csrf_token%}
            <div class="mb-3">
                <label for="Cliente" class="">Cliente</label>
                <input type="text" class="" id="formGroupExampleInput" value="{{ElClinte.cliente}}" name="title">
            </div>

推荐阅读