UpdateView not filling datalists html input and other fields

229 views Asked by At

I have an UpdateView which updates every field correctly except those fields that are filled via "datalist" html5, like "cliente", "fecha" and "isin".

The question is, how can I fill that information like the others fields?. What am I doing wrong? Could you give me some guide about that?

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

models.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)

Image with problem

1

There are 1 answers

0
Carlitos On

Have you tried passing it via context and accessing it with ORM operatives

views.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>