簡體   English   中英

Django不會從表單(非管理員)寫入數據庫

[英]Django does not write to the database from form (not admin)

嗨,大家好,我對Django 1.9有一點問題。 該類CreateView我沒有記錄在數據庫中,有趣的是我沒有引發任何錯誤,但是添加了一個代碼來驗證表單,並在表單無效的情況下要求進行打印(“ Bad”)控制台。 每次發送表單(使用POST)都不會記錄任何內容和控制台,由於您所做的設置,我打印了“ bad”。 現在的問題是表格無效,但是找不到什么。 有任何想法嗎?

表格

from django import forms
from .models import strategies


class FormCreateStgs(forms.ModelForm):

      ttlact = forms.CharField(
    widget = forms.TextInput(
        attrs={
            'class': 'fs-anim-lower',
            'type': 'text',
            'placeholder': 'Las letras gritonas',
            'required': True, }))
cmpo = forms.CharField(
    widget = forms.TextInput(
        attrs={
            'class': 'fs-anim-lower',
            'type': 'text',
            'placeholder': 'Escribe y selecciona...',
            'required': True, }))
aspc = forms.CharField(
    widget = forms.TextInput(
        attrs={
            'class': 'fs-anim-lower',
            'type': 'text',
            'placeholder': 'Escribe y selecciona...',
            'required': True, }))
cpmt = forms.CharField(
    widget = forms.TextInput(
        attrs={
            'class': 'fs-anim-lower',
            'type': 'text',
            'placeholder': 'Escribe y selecciona...',
            'required': True, }))
apzex = forms.CharField(
    widget = forms.TextInput(
        attrs={
            'class': 'fs-anim-lower',
            'type': 'text',
            'placeholder': 'Escribe y selecciona...',
            'required': True, }))
espc = forms.CharField(
    widget = forms.TextInput(
        attrs={
            'class': 'fs-anim-lower',
            'type': 'text', }))
mtrl = forms.CharField(
    widget = forms.TextInput(
        attrs={
            'class': 'fs-anim-lower',
            'type': 'text',
            'placeholder': 'Las letras gritonas',
            'required': True, }))
sgcs = forms.CharField(
    widget = forms.TextInput(
        attrs={
            'class': 'fs-anim-lower',
            'type': 'text',
            'placeholder': 'Las letras gritonas',
            'required': True, }))
obsv = forms.CharField(
    widget = forms.TextInput(
        attrs={
            'class': 'fs-anim-lower',
            'type': 'text',
            'placeholder': 'Las letras gritonas',
            'required': True, }))
iecnc = forms.CharField(
    widget = forms.TextInput(
        attrs={
            'class': 'fs-anim-lower',
            'type': 'text',
            'placeholder': 'Las letras gritonas',
            'required': True, }))
ieacvl = forms.CharField(
    widget = forms.TextInput(
        attrs={
            'class': 'fs-anim-lower',
            'type': 'text',
            'placeholder': 'Las letras gritonas',
            'required': True, }))
iehbdz = forms.CharField(
    widget = forms.TextInput(
        attrs={
            'class': 'fs-anim-lower',
            'type': 'text',
            'placeholder': 'Las letras gritonas',
            'required': True, }))

actini = forms.CharField(

    widget = forms.Textarea(
        attrs={
            'class': 'fs-anim-lower',
            'name': 'q12',
            'type': 'text',
            'placeholder': 'Las letras gritonas',
            'style': 'margin-bottom: 20px;',
            'required': True, }))
actdes = forms.CharField(

    widget = forms.Textarea(
        attrs={
            'class': 'fs-anim-lower',
            'name': 'q13',
            'type': 'text',
            'placeholder': 'Las letras gritonas',
            'style': 'margin-bottom: 20px;',
            'required': True, }))

actfnl = forms.CharField(

    widget = forms.Textarea(
        attrs={
            'class': 'fs-anim-lower',
            'name': 'q14',
            'type': 'text',
            'placeholder': 'Las letras gritonas',
            'style': 'margin-bottom: 20px;',
            'required': True, }))

class Meta:
    model = strategies
    exclude = ['ipU', 'nbrchg']

views.py

#from django.shortcuts import render
from django.views.generic.edit import CreateView
from .models import strategies
from .forms import FormCreateStgs



crpt = 'hujpl\strategies'


class CreateStrategie(CreateView):
    model = strategies
    template_name = "%s\ctrStrategie.html" % (crpt)
    form_class = FormCreateStgs
    success_url = '/'

    def form_valid(self, form):
        print("good")
        return super(CreateStrategie, self).form_valid(form)

    def form_invalid(self, form):
        print("BAD")
        return super(CreateStrategie, self).form_invalid(form)

模板:

 <form id="myform" class="fs-form fs-form-full" autocomplete="off" method="POST"> {% csrf_token %} <ol class="fs-fields"> <li> <label class="fs-field-label fs-anim-upper" for="q1" data-info="Escribe tu tema o titulo">Título</label> {{form.ttlact}} <!--input class="fs-anim-lower" id="q1" name="q1" type="text" placeholder="Las letras gritonas" required/--> </li> <li> <label class="fs-field-label fs-anim-upper" for="q2">Campo</label> {{form.cmpo}} </li> <li> <label class="fs-field-label fs-anim-upper" for="q2">Competencia</label> {{form.cpmt}} </li> <li> <label class="fs-field-label fs-anim-upper" for="q2">Aspecto</label> {{form.aspc}} </li> <li> <label class="fs-field-label fs-anim-upper" for="q2">Aprendizaje Esperado</label> {{form.apzex}} </li> <li> <label class="fs-field-label fs-anim-upper" for="q2">Sugerencias</label> {{form.sgcs}} </li> <li> <label class="fs-field-label fs-anim-upper" for="q2">Observaciones</label> {{form.obsv}} </li> <li> <label class="fs-field-label fs-anim-upper" for="q2">Indicador de Evaluación:</label> <label class="fs-field-label fs-anim-upper" for="q2">Conocimientos</label> {{form.iecnc}} <label class="fs-field-label fs-anim-upper" for="q2">Actitudes y Valores</label> {{form.ieacvl}} <label class="fs-field-label fs-anim-upper" for="q2">Habilidades y Destrezas</label> {{form.iehbdz}} </li> <li> <label class="fs-field-label fs-anim-upper" for="q2">Actividad</label> <label class="fs-field-label fs-anim-upper" for="q2">Inicio</label> {{form.actini}} <label class="fs-field-label fs-anim-upper" for="q2">Desarrollo</label> {{form.actdes}} <label class="fs-field-label fs-anim-upper" for="q2">Final</label> {{form.actfnl}} </li> </ol><!-- /fs-fields --> <button class="fs-submit" type="submit">Guardar Actividad</button> </form> 

即使使用css和js,它也會呈現模板。

您已經實例化了一個ModelForm而不引用該模型。 也許您應該使用像這樣的簡單形式:

from django import forms

class MyForm(forms.Form):
    # define fields

如果使用ModelForm,則必須在Meta內部類中指定模型,如下所示:

from . import models
from django import forms

class MyForm(forms.ModelForm):
  class Meta:
      model = models.MyModel
      fields = ['field1', 'field2',]

請查看https://docs.djangoproject.com/zh-CN/1.9/topics/forms/modelforms/https://docs.djangoproject.com/zh-CN/1.9/ref/forms/api/了解更多詳細信息。 我強烈建議您精通世界一流的文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM