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