数据没有验证错误django

时间:2018-01-25 07:16:20

标签: python django

任何人都可以帮助我.....从ModelForm保存数据时,我一直收到“数据未验证”错误。一切都运行正常,直到我为前端添加了一些CSS和JS,使用表单小部件并在模板上手动显示表单字段。

以下是代码:

forms.py

from django import forms
from .models import List_of_Res

class fordtp(forms.Form):
    month_choices=(
        ('JAN','January'),
        ('FEB','February'),
        ('MAR','March'),
        ('APR','April'),
        ('MAY','May'),
        ('JUN','June'),
        ('JUL','July'),
        ('AUG','August'),
        ('SEP','September'),
        ('NOV','November'),
        ('DEC','December'),
        )
    day_choices=[]
    for ddd in range(1,32):
        day_toS=(str(ddd),str(ddd))
        day_choices.append(day_toS)
    year_choices=[]
    for yyy in range(1990,2100):
        year_toS=(str(yyy),str(yyy))
        year_choices.append(year_toS)
    month = forms.ChoiceField(choices = month_choices,widget=forms.Select(attrs={'class':'form-control form-control-sm'}))
    year = forms.ChoiceField(choices = year_choices,widget=forms.Select(attrs={'class':'form-control form-control-sm'}))
    day = forms.ChoiceField(choices = day_choices,widget=forms.Select(attrs={'class':'form-control form-control-sm'}))
class ResearchForm(forms.ModelForm):
    class Meta:
        model = List_of_Res
        fields={
            'prog_title',
            'proj_title',
            'stud_title',
            'prog_lead',
            'stud_lead',
            'co_res',
            'res_site',
            'campus',
            'category_res',
            'classif_res',
            'amt_granted',
            'date_started',
            'res_status',
            'date_completed',
            'res_SF',
            'res_pubstat',
            'res_JN',
            'res_JV',
            'date_pub',
            'res_iprstat',
            'apptype',
            'date_appl',
            'date_pprv',
            'app_pending',
            'res_abs'
        }
        widgets = {
        'prog_title': forms.TextInput(attrs={'class':'form-control'}),
        'proj_title': forms.TextInput(attrs={'class':'form-control'}),
        'stud_title': forms.TextInput(attrs={'class':'form-control'}),
        'prog_lead': forms.TextInput(attrs={'class':'form-control'}),
        'stud_lead': forms.TextInput(attrs={'class':'form-control'}),
        'co_res': forms.Textarea(attrs={'class':'form-control','placeholder':'Enter 1 name per line'}),
        'res_site': forms.Textarea(attrs={'class':'form-control','placeholder':'Enter 1 site per line'}),
        'campus': forms.Select(attrs={'class':'form-control'}),
        'category_res': forms.RadioSelect(attrs={'class':'form-check-input'}),
        'classif_res': forms.Select(attrs={'class':'form-control'}),
        'amt_granted': forms.TextInput(attrs={'class':'form-control'}),
        'date_started': forms.DateInput(attrs={'placeholder':'YYYY-MM-DD','class':'form-control'}),
        'res_status': forms.RadioSelect(attrs={'class':'form-check-input'}),
        'date_completed': forms.DateInput(attrs={'placeholder':'YYYY-MM-DD','class':'form-control'}),
        'res_SF': forms.CheckboxSelectMultiple(attrs={'class':'form-check-input'}),
        'res_pubstat': forms.RadioSelect(attrs={'class':'form-check-input'}),
        'res_JN': forms.TextInput(attrs={'class':'form-control'}),
        'res_JV': forms.TextInput(attrs={'class':'form-control'}),
        'date_pub': forms.DateInput(attrs={'placeholder':'YYYY-MM-DD','class':'form-control'}),
        'res_iprstat':forms.RadioSelect(attrs={'class':'form-check-input'}),
        'apptype':forms.RadioSelect(attrs={'class':'form-check-input'}),
        'date_appl':forms.DateInput(attrs={'placeholder':'YYYY-MM-DD','class':'form-control'}),
        'date_pprv':forms.DateInput(attrs={'placeholder':'YYYY-MM-DD','class':'form-control'}),
        'app_pending': forms.RadioSelect(attrs={'class':'form-check-input'}),
        'res_abs': forms.Textarea(attrs={'class':'form-control'})
        }

(views.py):

from django.shortcuts import render
from django.http import HttpResponse
from .forms import ResearchForm
from .models import List_of_Res



def RIS_Home(request):
    return render(request,'RIS/RIS_Home.html')

def Add_Res(request):
    if request.method=='POST':
        form = ResearchForm(request.POST)
        if form.is_valid():
            resAdd=form.save(commit=False)
            resAdd.save()
    else:
        form = ResearchForm()
    args = {'form':form}
    return render(request,'RIS/RIS_Add-Edit.html',args)

(models.py)

from django.db import models


class List_of_Res(models.Model):
    Yes_no_Choices = (('YES','YES'),('NO','NO'))
    Stat_choices = (("COMPLETED","Completed"),("ON_GOING","On-Going"))
    Campus_choices = (
        ("APARRI","Aparri"),
        ("LASAM","Lasam"),
        ("LALLO","Lal-lo"),
        ("SANCHEZ_MIRA","Sanchez Mira"),
        ("CARIG","Carig"),
        ("ANDREWS","Andrews"),
        ("PIAT","Piat")
        )
    Category_choices = (
        ("BASIC","Basic"),
        ("APPLIED","Applied"),
        ("PILOT_TESTING","Pilot Testing"),
        ("TECHNOLOGY_PROMOTION_COMMERCIALIZATION","Technology Promotion / Commercialization")
        )
    Classification_choices = (
        ("AGRICULTURE","Agriculture"),
        ("BIOTECHNOLOGY","Biotechnology"),
        ("ICT","ICT"),
        ("HEALTH_PRODUCTS","Health Products"),
        ("ALTERNATIVE_ENERGY","Alternative Energy"),
        ("CLIMATE_CHANGE","Climate Change"),
        ("ENVIRONMENT","Environment"),
        ("SOCIO_ECONOMIC","Socio-economic"),
        ("NATURAL_PRODUCTS","Natural Products"),
        ("OTHER","Other")
        )
    Source_fund_choices = (
        ("CSU","CSU"),
        ("CHED","CHED"),
        ("DA_BAR","DA-BAR"),
        ("DOST","DOST"),
        ("PCCARRD","PCCARRD"),
        ("PCIERD","PCIERD"),
        ("PCHRD","PCHRD"),
        ("DA","DA"),
        ("OTHER","Other")
        )
    IPR_Type_choices = (
        ("PATENT","Patent"),
        ("UTILITY_MODEL","Utility Model"),
        ("TRADEMARK_TRADENAME","Trademark/Tradename"),
        ("COPYRIGHT","Copyright"),
        ("OTHER","Other")
        )
    prog_title = models.CharField(max_length=1000)
    proj_title = models.CharField(max_length=1000)
    stud_title = models.CharField(max_length=1000)
    prog_lead = models.CharField(max_length=300)
    stud_lead = models.CharField(max_length=300)
    co_res = models.TextField()
    res_site = models.TextField()
    campus = models.CharField(max_length=50,choices=Campus_choices,default='ANDREWS')
    category_res = models.CharField(max_length=50,choices=Category_choices,default='BASIC')
    classif_res = models.CharField(max_length=50,choices=Classification_choices,default='ICT')
    amt_granted = models.TextField()
    date_started = models.TextField()
    res_status = models.CharField(max_length=10, choices=Stat_choices, default='COMPLETED')
    date_completed = models.TextField()
    res_SF = models.TextField(choices=Source_fund_choices,default='CSU')
    res_pubstat = models.CharField(max_length=5,choices=Yes_no_Choices, default='YES')
    res_JN = models.TextField()
    res_JV = models.CharField(max_length=100)
    date_pub = models.TextField()
    res_iprstat = models.CharField(max_length=10, choices=Yes_no_Choices, default='YES')
    apptype = models.CharField(max_length=100,choices=IPR_Type_choices,default='PATENT')
    date_appl = models.TextField()
    date_pprv = models.TextField()
    app_pending = models.CharField(max_length=10, choices=Yes_no_Choices, default='YES')
    res_abs = models.CharField(max_length=1000)

结束这是html模板

{% extends 'RIS/RIS_Home.html' %}
{% block body %}

<div class="container">
    <form method="post">
        <div>
            {% csrf_token %}
            <div>
                <div class="row"><div class="boxed_content">Title of Research</div></div>
                <br>
                <div class="row">
                    <label class="label_style_AEform">Program Title</label>
                    <br>
                    {{ form.prog_title }}
                </div>
                <div class="row">
                    <label class="label_style_AEform">Project Title</label>
                    <br>
                    {{ form.proj_title }}
                </div>
                <div class="row">
                    <label class="label_style_AEform">Study Title</label>
                    <br>
                    {{ form.stud_title }}
                </div>
            </div>
            <br>
            <div>
                <br>
                <div class="row"><div class="boxed_content">Researcher/s</div></div>
                <br>
                <div class="row">
                    <div class="col">
                        <div class="row">
                            <label class="label_style_AEform">Program Leader</label>
                            <br>
                            {{ form.prog_lead }}
                        </div>
                        <br><br><br>
                        <div class="row">
                            <label class="label_style_AEform">Study Leader</label>
                            <br>
                            {{ form.stud_lead }}
                        </div>
                    </div>
                    <div class="col">                       
                        <label class="label_style_AEform">Co-Researcher/s</label>
                        <br>
                        {{ form.co_res }}   
                    </div>  
                </div>              
            </div>

            <div>
                <br>
                <div class="row"><div class="boxed_content">Site / Location of study</div></div>
                    <br>
                <div class="row">
                    {{ form.res_site }}
                </div>
            </div>

            <div>
                <br>
                <div class="row"><div class="boxed_content">Category of Research</div></div>
                {% for rdo in form.category_res %}
                <div class="form-check form-check-inline">
                    {{ rdo }}
                </div>
                {% endfor %}
            </div>
            <br>
            <div>
                <div class="row">
                    <div class="col">
                        <div class="row"><div class="boxed_content">Classification of Research<br>
                                {{ form.classif_res }}
                        </div></div>
                    </div>
                    <div class="col">
                        <div class="row"><div class="boxed_content">Campus<br>
                            {{ form.campus }}
                        </div></div>
                    </div>
                </div>
            </div>
            <br>
            <div>
                <div class="row">
                    <div class="col">
                        <div class="row"><div class="boxed_content">Source of Fund</div></div>
                        {% for chk in form.res_SF %}
                            <div class="form-check form-check-inline">
                                {{ chk }}
                            </div>
                        {% endfor %}
                    </div>
                    <div>
                        <div class="col">
                            <div class="row"><div class="boxed_content">Amount Granted<br>{{ form.amt_granted }}</div></div>
                        </div>
                    </div>
                </div>
            </div>
            <br>
            <div>
                <div class="row">
                    <div class="col">
                        <div class="row"><div class="boxed_content">Status of Research</div></div>
                        {% for rdo in form.res_status %}
                            <div class="form-check form-check-inline">
                                {{ rdo }}
                            </div>
                        {% endfor %}
                    </div>
                    <div class="col">
                        <div class="row"><div class="boxed_content">Date Started<br>
                        <div class="form-check form-check-inline">
                        {{ form.date_started }}
                        </div>
                        </div></div>

                    </div>
                    <div class="col">
                        <div class="row"><div class="boxed_content">Date Completed<br>
                        <div class="form-check form-check-inline">
                        {{ form.date_completed }}
                        </div>
                        </div></div>
                    </div>
                </div>
            </div>
            <br>
            <div class="row">

                <div class="boxed_content">Is the research published?
                    {% for rdo in form.res_pubstat %}
                        <div class="form-check form-check-inline">
                            {{ rdo }}
                        </div>
                    {% endfor %}
                </div>
                <br>
                <div class="row">
                    <div class="col">
                    <label class="label_style_AEform">If Yes,</label>   
                    </div>
                    <div class="col">
                        <label class="label_style_AEform">Name of Journal</label>
                        {{ form.res_JN }}
                    </div>
                    <div class="col">
                        <label class="label_style_AEform">Volume</label>
                        {{ form.res_JV }}
                    </div>
                    <div class="col">
                        <label class="label_style_AEform">Date Published</label>
                        <div class="form-check form-check-inline">
                        {{ form.date_pub }}
                        </div>
                    </div>
                </div>
            </div>
            <br>
            <div class="row">
                <div class="boxed_content">Does the research have IPR application?
                    {% for rdo in form.res_iprstat %}
                        <div class="form-check form-check-inline">
                            {{ rdo }}
                        </div>
                    {% endfor %}
                </div>

                <br>
                <div class="row">
                    <div class="col">
                    <label class="label_style_AEform">If Yes,   Application Type: </label>
                    {% for rdo in form.apptype %}
                        <div class="form-check form-check-inline">
                            {{ rdo }}
                        </div>
                    {% endfor %}
                    </div>
                </div>
                <div class="row">
                    <div class="col">
                    <label class="label_style_AEform">Date of Application</label>
                    <div class="form-check form-check-inline">
                        {{ form.date_appl }}
                        </div>
                    </div>
                    <div class="col">
                    <label class="label_style_AEform">Date of Approval of application</label>
                    <div class="form-check form-check-inline">
                        {{ form.date_pprv }}
                        </div>
                    </div>
                    <br>
                    <div class="col">
                    <label class="label_style_AEform">Is the application Pending? </label>
                    {% for rdo in form.app_pending %}
                        <div class="form-check">
                            {{ rdo }}
                        </div>
                    {% endfor %}
                    </div>

                </div>


            </div>
            <div class="row">
                <div class="boxed_content">Abstract of the study</div>
                <br>
                {{ form.res_abs }}
            </div>  
        </div>

        <div class="row"><button type="submit" class="btn btn-primary mb-2">SAVE</button></div>
    </form>
</div>
{% endblock %}

1 个答案:

答案 0 :(得分:1)

您应该在表单中使用MultipleChoiceField作为小部件。

basicinfo = { 'website' : '' };

[(ngModel)]='basicinfo.website'