如何在一个模板中保存1个表单和一个创建视图

时间:2019-03-11 22:09:13

标签: django django-models django-forms django-templates django-views

我需要您的帮助,我有以下问题。 it is an information table

在这些时刻,它一直是texfield的变化原因。

我附上了相应的型号:

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%}

0 个答案:

没有答案