无法创建值错误,因为数据无效

2024-09-19 23:38:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用同一个页面保存两个表单,为此我创建了一个表单集。我以前也用过forests,但是这次我总是收到一个错误,告诉我表单数据没有验证,我似乎找不到问题所在。在

我来了视图.py(编辑)

def mensajenuevo(request, idDoctor):
    usuario = Doctores.objects.filter(user=request.user)
    instance = get_object_or_404(Doctores, idDoctor=idDoctor)
    doctoresu = Doctores.objects.get(user=request.user)
    doctor = doctoresu.idDoctor
    pacientes = PacientesDoctores.objects.raw('SELECT idPacientesDoctores,idPaciente_id,idDoctor_id,Vitalis_pacientes.Nombre,Vitalis_pacientes.Apellidos FROM Vitalis_pacientesdoctores INNER JOIN Vitalis_pacientes ON Vitalis_pacientesdoctores.idPaciente_id=Vitalis_pacientes.idPaciente WHERE idDoctor_id=%s', [doctor])
    formchat = ChatForm()
    formmensaje = MensajeForm()
    if request.method == "POST":
        formchat = ChatForm(request.POST)
        formmensaje = MensajeForm(request.POST)
        if formchat.is_valid():
            chat = formchat.save(commit=False)
            chat.idDoctor = instance
            chat.idPaciente = Pacientes.objects.get(idPaciente=1)
            chat.save()
            if formmensaje.is_valid():
                mensaje = formmensaje.save(commit=False)
                mensaje.idChat = formchat.idChat
                mensaje.Receptor = request.POST.get("paciente", "")
                mensaje.Emisor = instance
                mensaje.FechaMensaje = datetime.today()
                mensaje.HoraMensaje = datetime.now()
                mensaje.save()
            return HttpResponseRedirect("/doctor/")
    context = ({"usuario": usuario, "pacientes": pacientes, "formchat": formchat, "formmensaje": formmensaje})
    return render(request, "vitalis/mensajenuevo.html", context)

两者兼而有之表单.py在

^{pr2}$

在模型.py在

class Chat(models.Model):
    idChat = models.AutoField(primary_key=True, null=False, max_length=15)
    idDoctor = models.ForeignKey(Doctores)
    idPaciente = models.ForeignKey(Pacientes)

class Mensajes(models.Model):
    idMensaje = models.AutoField(primary_key=True, null=False, max_length=15)
    idChat = models.ForeignKey(Chat)
    Emisor = models.CharField(max_length=20)
    Receptor = models.CharField(max_length=20)
    Sujeto = models.CharField(max_length=200)
    Mensaje = models.TextField(max_length=5000)
    FechaMensaje = models.DateField()
    HoraMensaje = models.TimeField()
    Leido = models.CharField(max_length=2, default="No")

最后是模板

<form method="post" action="">
{% csrf_token %}
    <div class="row">
        <div class="col-sm-6 col-lg-6 casilla">
            <div class="form-group">
                <label for="Paciente" class="col-md-3 control-label">Para</label>
                <div class="col-md-8">
                    <select id="Paciente" name="paciente" class="selectpicker form-control" data-live-search="true">
                        <option>Seleccione uno</option>
                        {% for paciente in pacientes %}
                            <option value="{{ paciente.idPaciente }}">{{ paciente.Nombre }} {{ paciente.Apellidos }}</option>
                        {% endfor %}
                    </select>
                </div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-6 col-lg-6 casilla">
            <div class="form-group">
                <label for="Sujeto" class="col-md-3 control-label">Sujeto</label>
                <div class="col-md-8">
                    {{ formmensaje.Sujeto }}
                    {{ formmensaje.Sujeto.errors }}
                </div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12 col-lg-12 casilla center-block">
            <div class="form-group">
                <label for="Mensaje" class="col-md-2 control-label">Mensaje</label>
                <div class="col-sm-12">
                    {{ formmensaje.Mensaje }}
                    {{ formmensaje.Mensaje.errors }}
                </div>
            </div>
        </div>
    {{ formchat.non_field_errors }}
    {{ formmensaje.non_field_errors }}
        <button type="submit" class="btn btn-primary pull-right">Enviar</button>
    </div>
</form>

谢谢!在

这是回溯

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/mensajenuevo/1

Django Version: 1.6.6
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.sites',
 'Vitalis',
 'django.contrib.admin',
 'south',
 'allauth',
 'allauth.account',
 'allauth.socialaccount',
 'simplesearch')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')


Traceback:
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response
  112.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Library/Python/2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  22.                 return view_func(request, *args, **kwargs)
File "/Users/eduardoalcocer/Desktop/PAGINAS WEB/MobileHealth/allauth/account/decorators.py" in _wrapped_view
  33.             return view_func(request, *args, **kwargs)
File "/Users/eduardoalcocer/Desktop/PAGINAS WEB/MobileHealth/Vitalis/views.py" in mensajenuevo
  401.             mensaje = formmensaje.save(commit=False)
File "/Library/Python/2.7/site-packages/django/forms/models.py" in save
  446.                              construct=False)
File "/Library/Python/2.7/site-packages/django/forms/models.py" in save_instance
  80.                          " validate." % (opts.object_name, fail_message))

Exception Type: ValueError at /mensajenuevo/1
Exception Value: The Mensajes could not be created because the data didn't validate.

Tags: djangopydivmodelsrequestcolcontriblabel
1条回答
网友
1楼 · 发布于 2024-09-19 23:38:25

你没有正确使用表单集。表单集是用来处理同一个表单类的多个实例,而不是两个不同的表单类。请(回复?)阅读formset_factory的文档:https://docs.djangoproject.com/en/dev/ref/forms/formsets/#django.forms.formsets.formset_factory-第二个参数应该是FormSet类,而不是Form类。在

相关问题 更多 >