Мне нужна ваша помощь, у меня следующая проблема. это информационная таблица
В эти моменты уже сохраняется причина изменения, это текстовое поле.
Я прилагаю соответствующие модели:
class Condition(models.Model):
UNITS_OF_MEASURE =(
('P', '%'),
('C', '°C'),
('F', '°F'),
('CM','cm'),
('MM', 'mm'),
('S', 'Seg'),
)
name = models.CharField("Nombre:",max_length=20)
nominal_value = models.DecimalField("Valor Nominal:", max_digits=5, decimal_places=2)
min_value = models.DecimalField("Valor Minimo:", max_digits=5, decimal_places=2)
max_value = models.DecimalField("Valor Maximo:", max_digits=5, decimal_places=2)
unit_of_measure = models.CharField("Unidad de medicion",choices=UNITS_OF_MEASURE,max_length=20)
last_value = models.DecimalField("Valor de Ultima corrida:", max_digits=5, decimal_places=2)
is_reference = models.BooleanField()
job_instruction = models.ForeignKey(JobInstruction,on_delete=models.CASCADE)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("conditions:list_condition")
class ChangeLog(models.Model):
STATES =(
('ONREVIEW', 'En revision'),
('ACCEPTED', 'Aceptado'),
('DENIED', 'Denegado'),
)
job_instruction= models.ForeignKey(JobInstruction,on_delete=models.CASCADE)
date_created = models.DateField("Fecha creacion:",auto_now_add=True)
state = models.CharField(max_length=20, choices=STATES, default="En revision")
author = models.ForeignKey(User,on_delete=models.CASCADE, null = True, blank= True)
reason_for_change = models.TextField("Razon de cambio")
def __str__(self):
return f'{self.job_instruction}'
class ValueChange(models.Model):
condition = models.ForeignKey(Condition,on_delete=models.CASCADE)
changeLog = models.ForeignKey(ChangeLog,on_delete=models.CASCADE)
value = models.DecimalField("Valor", max_digits=5, decimal_places=2)
def __str__(self):
return f'{self.condition}'
Теперь в представлениях у меня есть следующее.
class CreateChangeLog(SuccessMessageMixin,generic.CreateView):
template_name= "conditions/create_change_log.html"
model = ChangeLog
fields= [
'reason_for_change',
]
success_url="/"
success_message = " was created successfully"
form_value = ValueChangeForm
def get_context_data(self, **kwargs):
job_queryset =JobInstruction.objects.all()
job_instruction = get_object_or_404(job_queryset,pk=self.kwargs['pk'])
context = super().get_context_data(**kwargs)
context['title'] = 'Cambios'
context['job_ins'] = job_instruction
context['breadcrumb_list'] = [
{'title':'Condiciones', 'url':reverse('conditions:index')},
{'title':'Maquinas', 'url':reverse('conditions:list_machine')},
{'title':'Hojas de condiciones', 'url':reverse('conditions:detail_machine', args=(job_instruction.id,))},
{'title':job_instruction, 'url':reverse('conditions:detail_job_instruction', args=(job_instruction.id,))},
]
return context
def form_valid(self, form,*args,**kwargs):
job_instruction = get_object_or_404(JobInstruction, pk=self.kwargs['pk'])
ChangeLog = form.save(commit=False)
ChangeLog.author = self.request.user
ChangeLog.job_instruction = job_instruction
request = super(CreateChangeLog, self).form_valid(form)
if form.is_valid():
ChangeLog.save()
return request
Я хочу знать, как сохранить другие поля, которых нет в представлении создания, чтобы вы могли сохранить значение в valueChange тамсначала необходимо прикрепить changeLog к моему шаблону, чтобы вы могли его визуализировать
{% extends "conditions/base.html" %}
{% load bootstrap4 %}
{% block Content %}
<form method = "post">
{% csrf_token %}
<table class="table text-center">
<thead>
<tr>
<th scope="col">Condición</th>
<th scope="col" >Min - Max</th>
<th scope="col">Valor Nominal</th>
<th scope="col">Cambio</th>
</thead>
<tbody>
{% for condition in job_ins.condition_set.all %}
<tr>
<td> {{condition.name}} ( {{condition.unit_of_measure}} )</td>
<td> {{condition.min_value}} - {{condition.max_value}} </td>
<td> {{condition.nominal_value}}</td>
<td>{{condition.id }} <input name={{condition.id}} type="number" placeholder={{condition.nominal_value}}> </td>
</tr>
{%endfor%}
<tr>
<td colspan="4"> {% bootstrap_form form %}</td>
</tr>
<th scope="row" class="Activate"></th>
<td></td>
<td></td>
<td><input type = "submit" value = "Guardar cambios" class="btn btn-success">
</tr>
</tbody>
</table>
</form>
{% endblock%}