0

我有这些模型,Tipos,Prioridad 和 Estado,与 Tarea 相关

定义如下:

class Tipos(models.Model):
    tipo = models.CharField(max_length=16,
                            verbose_name='tipo')
    abrv = models.CharField(max_length=4,
                            null=True,
                            blank=True,
                            default='')

    class Meta:
        verbose_name = "Tipo"
        verbose_name_plural = "Tipos"

    def __str__(self):
        return self.tipo


class Prioridad(models.Model):
    prioridad = models.CharField(max_length=16,
                                 verbose_name='prioridad')
    abrv = models.CharField(max_length=4,
                            null=True,
                            blank=True,
                            default='')
    orden = models.IntegerField(u'orden', blank=False)

    class Meta:
        verbose_name = "Prioridad"
        verbose_name_plural = "Prioridades"

    def __str__(self):
        return self.prioridad


class Estado(models.Model):
    estado = models.CharField(max_length=16,
                              verbose_name='estado')
    abrv = models.CharField(max_length=4,
                            null=True,
                            blank=True,
                            default='')

    class Meta:
        verbose_name = "Estado"
        verbose_name_plural = "Estados"

    def __str__(self):
        return self.estado


class Tarea(models.Model):
    numtar = models.AutoField(primary_key=True)
    cliente = models.ForeignKey(User,
                                related_name='user_cliente',
                                null=True,
                                on_delete=models.DO_NOTHING)
    apoyo = models.ForeignKey(User,
                              related_name='user_apoyo',
                              null=True,
                              on_delete=models.DO_NOTHING)
    asignado = models.ForeignKey(User,
                                 related_name='user_asignado',
                                 null=True,
                                 on_delete=models.DO_NOTHING)
    descorta = models.CharField(max_length=140)
    deslarga = models.TextField(max_length=8195)
    estado = models.ForeignKey(Estado,
                               null=True,
                               on_delete=models.SET_NULL)
    tipo = models.ForeignKey(Tipos,
                             null=True,
                             on_delete=models.SET_NULL)
    prioridad = models.ForeignKey(Prioridad,
                                  null=True,
                                  on_delete=models.SET_NULL)
    creacion = models.DateTimeField(auto_now_add=True)
    revision = models.DateTimeField(auto_now=True, blank=True)
    cierre = models.DateTimeField(null=True, blank=True)

    class Meta:
        verbose_name = "Tarea"
        verbose_name_plural = "Tareas"

    def __str__(self):
        return '%s' % (str(self.numtar))

我称之为以下观点:

@login_required(login_url='/login')
def newincid_view(request):
    perfil = ExUserProfile.objects.get(user=request.user)
    prioridad_media = Prioridad.objects.get(prioridad='Media')
    estado_abierta = Estado.objects.get(estado='Abierta')
    tipo_incidencia = Tipos.objects.get(tipo='Incidencia')

    datos_apertura = {'cliente': perfil.user,
                      'tipo': tipo_incidencia,
                      'prioridad:': prioridad_media,
                      'estado': estado_abierta
                      }

    if request.method == 'POST':
        form = newincidForm(request.POST,initial=datos_apertura)
        if form.is_valid():
            tar=form.save(commit=True)
            apertura = TipoNota.objects.get(tiponota='Apertura')
            anotacion = Nota(numtar=tar, tiponota=apertura,
                             anotador=perfil.user,
                             contenido='Incidencia Abierta')
            anotacion.save()
    else:
        form = newincidForm(initial=datos_apertura)

    return render(request, "incid/newincid.html", {'form':form})

使用这种形式:

class newincidForm(ModelForm):
    class Meta:
        model = Tarea
        exclude = ['numtar', 'creacion', 'revision', 'cierre']

    def __init__(self, *args, **kwargs):
        super(newincidForm, self).__init__(*args, **kwargs)
        self.fields['descorta'].widget.attrs['class'] = 'form-control no-resize'
        self.fields['deslarga'].widget.attrs['class'] = 'form-control no-resize autogrowth'
    

这个模板:

{% extends "incid/base_incid.html" %}
{% load bootstrap3 %}
{% load static %}
{% load logo %}
{% load i18n %}     <!-- Hooks para poder hacerlo multilingüe -->
{% load tags_html %}

{% block css %}

{% bootstrap_css %}
{% bootstrap_javascript %}
    <link rel="stylesheet"
          href="{% static 'adminbsb/plugins/jquery-datatable/skin/bootstrap/css/dataTables.bootstrap.css' %}"/>
{% endblock %}

{% block content %}
    <div class="container-fluid">
        <div class="row clearfix">
            <h4 style="margin-bottom: 10px; margin-top: 10px; padding-left: 15px">NUEVA INCIDENCIA</h4>
        </div>
            <div class="body">
                <form  action= "{% url 'incid:newincid' %}" method="post" class="form">
                     {% csrf_token %}
                        {% bootstrap_form form %}
                         {% buttons %}
                            <button type="submit" class="btn btn-primary">Submit</button>
                        {% endbuttons %}
                </form>
                {{ form.errors }}
            </div>
    </div>

{% endblock %}

扩展标准基础,不提及prioriidad、tipo 或estado。

然而,在渲染时,tipoestado会显示初始值,但prioriidad不会。我已经从头开始重写视图、表单和模板两次,因为我找不到错字,但它仍然会发生。我将不胜感激有关该做什么的任何线索或提示。

注意:这是对我发布的另一个问题的重新审视,我不知道如何删除或编辑。

4

1 回答 1

0

忘掉它。就像我在 datos_apertura 定义的引号中包含分号一样愚蠢:

它是这样写的: 'prioridad:': prioridad_media, 当它应该是 'prioridad':prioridad_media 在这种白痴中失去了几天。如果我尝试启动表单的未知字段,应该会引发错误,不是吗?此外,如果 PyCharm 没有把所有的东西都当作错别字,我就不会让它沉默了。

非常感谢,感谢您耐心阅读我的帖子。

于 2020-11-18T04:05:13.040 回答