Django: how to get option value from createview class using a form?

0

I am using CreateView to create objects, but at the same time I need to update another model with the data of a select, but getting the value :

views.py:

@method_decorator(login_required, name='dispatch')
class BitacoraCreateView(CreateView):
     form_class = BitacoraForm
     template_name = 'bitacora.html'

    def form_valid(self, form):
        kilometrajeform = form.cleaned_data['kilometraje_llegada']
        hodometroform = form.cleaned_data['hodometro_llegada']
        maquinaform = //get value option para obtener "id" de objeto maquina
        maquina = Maquina.objects.get(id=maquinaform)
        maquina.kilometraje = kilometrajeform
        maquina.hodometro = hodometroform
        maquina.save()
        return super(BitacoraCreateView, self).form_valid(form)

    def get_success_url(self):
        return reverse("bitacora_list")

models.py:

class Bitacora(models.Model):
    compania = models.ForeignKey(Compania)
    maquina =   ChainedForeignKey(Maquina,chained_field="compania",chained_model_field="compania")
    #otros campos

forms.py

class BitacoraForm(forms.ModelForm):
    class Meta:
        model = Bitacora
        fields = ['compania','maquina', 'conductor', 'cliente', 'direccion', 'fecha',
              'hora_salida','hora_llegada','clave','kilometraje_salida',
              'kilometraje_llegada','hodometro_salida','hodometro_llegada','observciones']
        widgets = {
            'compania': forms.Select(attrs={'class': 'form-control'}),
            'maquina': forms.Select(attrs={'class': 'form-control'}),
            'conductor': forms.Select(attrs={'class': 'form-control'}),
            'cliente': forms.TextInput(attrs={'class': 'form-control'}),
            'direccion': forms.TextInput(attrs={'class': 'form-control'}),
            'fecha': forms.DateInput(attrs={'id': 'fecha', 'class': 'date-picker form-control'}),
            'hora_salida': forms.TimeInput(attrs={'class': 'form-control'}),
            'hora_llegada': forms.TimeInput(attrs={'class': 'form-control'}),
            'clave': forms.TextInput(attrs={'class': 'form-control'}),
            'kilometraje_salida': forms.TextInput(attrs={'class': 'form-control', 'pattern': '[0-9]*'}),
            'kilometraje_llegada': forms.TextInput( attrs={'class': 'form-control', 'pattern': '[0-9]*'}),
            'hodometro_salida': forms.TextInput(attrs={'class': 'form-control', 'pattern': '[0-9]*'}),
            'hodometro_llegada': forms.TextInput(attrs={'class': 'form-control', 'pattern': '[0-9]*'}),
            'observciones': forms.Textarea(attrs={'class': 'form-control', 'style': 'height: 90px;'}),
        }

I know that with a function passing the parameter request I can get it with request.post['select_name'] , but with class based view we know how to do it. Greetings

    
asked by juan muñoz 06.06.2017 в 23:28
source

0 answers