1.先看一下 Model 非常多

from django.db import models
from users.models import UserProfile # Create your models here.
class Edc_Project(models.Model):
project_name = models.CharField(max_length=200, verbose_name="项目名称", default="")
project_number = models.CharField(max_length=200,verbose_name="项目编号", default="")
project_user = models.ForeignKey(UserProfile,verbose_name='项目负责人')
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "EDC项目信息"
verbose_name_plural = verbose_name class Edc_Center(models.Model):
center_name = models.CharField(max_length=200, verbose_name="中心名称", default="")
center_number = models.CharField(max_length=200,verbose_name="中心编号", default="")
center_user = models.ManyToManyField(UserProfile, verbose_name='中心负责人')
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "EDC中心信息"
verbose_name_plural = verbose_name class Edc_Patient(models.Model):
patient_number = models.CharField(max_length=200,verbose_name="患者编号", default="")
patient_user = models.ForeignKey(UserProfile, verbose_name='患者负责人',null=True,blank=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "EDC患者信息"
verbose_name_plural = verbose_name class Edc_Visit(models.Model):
visit_name = models.CharField(max_length=200, verbose_name="访视名称", default="")
visit_number = models.CharField(max_length=200,verbose_name="访视编号", default="")
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "EDC访视信息"
verbose_name_plural = verbose_name class Edc_Form(models.Model):
form_name = models.CharField(max_length=200, verbose_name="表单名称", default="")
form_number = models.CharField(max_length=200,verbose_name="表单缩写", default="")
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "EDC表单信息"
verbose_name_plural = verbose_name class Dr(models.Model):
"""
发药纪录
"""
formame = models.CharField(verbose_name='Modelform名称', max_length=50, blank=True, null=True)
dr_center = models.ForeignKey(Edc_Center, verbose_name='发药纪录_中心')
dr_patient = models.ForeignKey(Edc_Patient,verbose_name='发药纪录_病人')
dr_visit = models.ForeignKey(Edc_Visit, verbose_name='发药纪录_访视')
date_delivery = models.DateTimeField(verbose_name='发药日期',blank=True, null=True)
drugs_name = models.CharField(verbose_name='药品名称',max_length=50, blank=True, null=True)
dose = models.CharField(verbose_name='剂量',max_length=50, blank=True, null=True)
dosage_form = models.CharField(verbose_name='剂型', max_length=50, blank=True, null=True)
sign_drug_name = models.CharField(verbose_name='领药人签字', max_length=50, blank=True, null=True)
drug_user_name = models.CharField(verbose_name='发药人签字', max_length=50, blank=True, null=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "发药纪录"
verbose_name_plural = verbose_name # class DrSelect(models.Model):
# """
# 发药纪录的药品名称和剂量等
# """
# id = models.IntegerField(db_column='ID', blank=True, null=True)
# druge = models.CharField(db_column='DRUGE', max_length=1000, blank=True, null=True)
# dose = models.CharField(db_column='DOSE', max_length=1000, blank=True, null=True)
# form = models.CharField(db_column='FORM', max_length=1000, blank=True, null=True)
#
# class Meta:
# managed = False
# db_table = 'DR_SELECT' class Eg(models.Model):
"""
本次实验室检测结果
"""
formame = models.CharField(verbose_name='Modelform名称', max_length=50, blank=True, null=True)
eg_center = models.ForeignKey(Edc_Center, verbose_name='中心')
eg_patient = models.ForeignKey(Edc_Patient,verbose_name='病人')
eg_visit = models.ForeignKey(Edc_Visit, verbose_name='访视')
date_collection = models.DateTimeField(verbose_name='采血日期',blank=True, null=True)
eg_cd4 = models.CharField(verbose_name='CD4',max_length=50, blank=True, null=True)
eg_cd8 = models.CharField(verbose_name='CD8',max_length=50, blank=True, null=True)
hiv_viral_load = models.CharField(verbose_name='HIV病毒载量',max_length=50, blank=True, null=True)
leucocyte_count = models.CharField(verbose_name='白细胞计数',max_length=50, blank=True, null=True)
total_lymphocyte = models.CharField(verbose_name='总淋巴细胞计数',max_length=50, blank=True, null=True)
platelet_count = models.CharField(verbose_name='血小板计数',max_length=50, blank=True, null=True)
eg_hemoglobin = models.CharField(verbose_name='血红蛋白',max_length=50, blank=True, null=True)
serum_creatinine = models.CharField(verbose_name='血肌酐',max_length=50, blank=True, null=True)
urea_nitrogen = models.CharField(verbose_name='血尿素氮',max_length=50, blank=True, null=True)
eg_triglyceride = models.CharField(verbose_name='甘油三酯',max_length=50, blank=True, null=True)
total_cholesterol = models.CharField(verbose_name='总胆固醇',max_length=50, blank=True, null=True)
blood_sugar = models.CharField(verbose_name='血糖',max_length=50, blank=True, null=True)
blood_amylase = models.CharField(verbose_name='血淀粉酶',max_length=50, blank=True, null=True)
alanine_alt = models.CharField(verbose_name='谷丙转氨酶ALT',max_length=50, blank=True, null=True)
aspertate_alt = models.CharField(verbose_name='谷草转氨酶AST',max_length=50, blank=True, null=True)
bilirubin_bil = models.CharField(verbose_name='总胆红素T.BIL',max_length=50, blank=True, null=True)
eg_hbsag = models.CharField(verbose_name='HBsAg',max_length=50, blank=True, null=True)
eg_antihcv = models.CharField(verbose_name='anti-HCV',max_length=50, blank=True, null=True)
drug_resistance = models.CharField(verbose_name='耐药性检测',max_length=50, blank=True, null=True)
resistance_name = models.CharField(verbose_name='耐药药物名称',max_length=50, blank=True, null=True) add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "本次实验室检测结果"
verbose_name_plural = verbose_name class Ggn(models.Model):
'''
肝功能
'''
formame = models.CharField(verbose_name='Modelform名称', max_length=50, blank=True, null=True)
ggn_center = models.ForeignKey(Edc_Center, verbose_name='中心')
ggn_patient = models.ForeignKey(Edc_Patient,verbose_name='病人')
ggn_visit = models.ForeignKey(Edc_Visit, verbose_name='访视')
collection_date = models.DateTimeField(verbose_name='采集日期',blank=True, null=True)
alanine_alt = models.CharField(verbose_name='谷丙转氨酶ALT',max_length=50, blank=True, null=True)
aspertate_alt = models.CharField(verbose_name='谷草转氨酶AST',max_length=50, blank=True, null=True)
bilirubin_bil = models.CharField(verbose_name='总胆红素T.BIL',max_length=50, blank=True, null=True)
direct_bilirubin = models.CharField(verbose_name='直接胆红素(DBIL)',max_length=50, blank=True, null=True)
total_protein = models.CharField(verbose_name='血清总蛋白(TP)',max_length=50, blank=True, null=True)
serum_albumin = models.CharField(verbose_name='血清白蛋白(ALB)',max_length=50, blank=True, null=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "肝功能"
verbose_name_plural = verbose_name class Ncg(models.Model):
'''
尿常规
'''
formame = models.CharField(verbose_name='Modelform名称', max_length=50, blank=True, null=True)
ncg_center = models.ForeignKey(Edc_Center, verbose_name='中心')
ncg_patient = models.ForeignKey(Edc_Patient,verbose_name='病人')
ncg_visit = models.ForeignKey(Edc_Visit, verbose_name='访视')
collection_date = models.DateTimeField(verbose_name='采集日期',blank=True, null=True)
acidity_alkalinity = models.CharField(verbose_name='酸碱度(pH)',max_length=50, blank=True, null=True)
specific_gravity = models.CharField(verbose_name='尿比重(SG)',max_length=50, blank=True, null=True)
bile_proto = models.CharField(verbose_name='尿胆原(URO)',max_length=50, blank=True, null=True)
occult_blood = models.CharField(verbose_name='隐血(BLO)',max_length=50, blank=True, null=True)
ncg_leukocyte = models.CharField(verbose_name='白细胞(WBC)',max_length=50, blank=True, null=True)
ucg_protein = models.CharField(verbose_name='尿蛋白(PRO)',max_length=50, blank=True, null=True)
ncg_niaotang = models.CharField(verbose_name='尿糖(GLU)',max_length=50, blank=True, null=True)
ncg_bilirubin = models.CharField(verbose_name='胆红素(BIL)',max_length=50, blank=True, null=True)
ncg_ketone = models.CharField(verbose_name='酮体(KET)',max_length=50, blank=True, null=True)
red_blood = models.CharField(verbose_name='尿红细胞(RBC)',max_length=50, blank=True, null=True)
urine_colour = models.CharField(verbose_name='尿液颜色(GOL)',max_length=50, blank=True, null=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "尿常规"
verbose_name_plural = verbose_name class Sxqgn(models.Model):
'''
肾小球功能
'''
formame = models.CharField(verbose_name='Modelform名称', max_length=50, blank=True, null=True)
sxqgn_center = models.ForeignKey(Edc_Center, verbose_name='中心')
sxqgn_patient = models.ForeignKey(Edc_Patient,verbose_name='病人')
sxqgn_visit = models.ForeignKey(Edc_Visit, verbose_name='访视')
collection_date = models.DateTimeField(verbose_name='采血日期',blank=True, null=True)
serum_creatinine = models.CharField(verbose_name='血肌酐',max_length=50, blank=True, null=True)
urea_nitrogen = models.CharField(verbose_name='血尿素氮',max_length=50, blank=True, null=True)
uric_acid = models.CharField(verbose_name='血尿酸(UA)',max_length=50, blank=True, null=True)
serum_cystatin = models.CharField(verbose_name='血清胱抑素C(CysC)',max_length=50, blank=True, null=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "肾小球功能"
verbose_name_plural = verbose_name class Tr(models.Model):
'''
本次抗毒治疗治疗处方
'''
formame = models.CharField(verbose_name='Modelform名称', max_length=50, blank=True, null=True)
tr_center = models.ForeignKey(Edc_Center, verbose_name='中心')
tr_patient = models.ForeignKey(Edc_Patient,verbose_name='病人')
tr_visit = models.ForeignKey(Edc_Visit, verbose_name='访视')
drugs_name = models.CharField(verbose_name='药品名称',max_length=50, blank=True, null=True)
unit_dose = models.CharField(verbose_name='单位剂量',max_length=50, blank=True, null=True)
single_dosage = models.CharField(verbose_name='单次用药量',max_length=50, blank=True, null=True)
method_taking = models.CharField(verbose_name='服用方法',max_length=50, blank=True, null=True)
dose_hair = models.CharField(verbose_name='发药量',max_length=50, blank=True, null=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "本次抗毒治疗治疗处方"
verbose_name_plural = verbose_name class V1A(models.Model):
'''
V1A
'''
formame = models.CharField(verbose_name='Modelform名称', max_length=50, blank=True, null=True)
v1a_center = models.ForeignKey(Edc_Center, verbose_name='中心')
v1a_patient = models.ForeignKey(Edc_Patient,verbose_name='病人')
v1a_visit = models.ForeignKey(Edc_Visit, verbose_name='访视')
agency_code = models.CharField(verbose_name='治疗机构代码',max_length=50, blank=True, null=True)
treatment_number = models.CharField(verbose_name='抗病毒治疗号',max_length=50, blank=True, null=True)
antiviral_therapy = models.CharField(verbose_name='抗病毒治疗类型',max_length=50, blank=True, null=True)
treatment_code = models.CharField(verbose_name='病人治疗编码',max_length=50, blank=True, null=True)
card_number = models.CharField(verbose_name='传染病报告卡卡片编号',max_length=50, blank=True, null=True)
birth_date = models.CharField(verbose_name='出生日期',max_length=50, blank=True, null=True)
v1a_sex = models.CharField(verbose_name='性别',max_length=50, blank=True, null=True)
source_treatment = models.CharField(verbose_name='抗病毒治疗费用来源',max_length=50, blank=True, null=True)
sources_cost = models.CharField(verbose_name='其他费用来源',max_length=50, blank=True, null=True)
marital_status = models.CharField(verbose_name='婚姻状况',max_length=50, blank=True, null=True)
hiv_time = models.CharField(verbose_name='确诊HIV抗体阳性时间',max_length=50, blank=True, null=True)
infection_pathway = models.CharField(verbose_name='感染途径',max_length=50, blank=True, null=True)
year_tuberculosis = models.CharField(verbose_name='近一年是否患肺结核',max_length=50, blank=True, null=True)
patient_phthisis = models.CharField(verbose_name='病人是否接受抗结核治疗',max_length=50, blank=True, null=True)
aids_symptom = models.CharField(verbose_name='近三个月是否出现下列艾滋病相关病症',max_length=50, blank=True, null=True)
related_diseases = models.CharField(verbose_name='相关疾病/症状',max_length=50, blank=True, null=True)
other_diseases = models.CharField(verbose_name='其它机会性感染/肿瘤',max_length=50, blank=True, null=True)
below_diseases = models.CharField(verbose_name='目前病人是否出现以下症状、体征',max_length=50, blank=True, null=True)
v1a_diseases = models.CharField(verbose_name='症状、体征',max_length=50, blank=True, null=True)
clinical_stages = models.CharField(verbose_name='目前临床病人WHO临床分期',max_length=50, blank=True, null=True)
v1a_weight = models.CharField(verbose_name='病人目前体重',max_length=50, blank=True, null=True)
v1a_height = models.CharField(verbose_name='身高',max_length=50, blank=True, null=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "V1A"
verbose_name_plural = verbose_name class V1C(models.Model):
'''
V1C
'''
formame = models.CharField(verbose_name='Modelform名称', max_length=50, blank=True, null=True)
v1c_center = models.ForeignKey(Edc_Center, verbose_name='中心')
v1c_patient = models.ForeignKey(Edc_Patient,verbose_name='病人')
v1c_visit = models.ForeignKey(Edc_Visit, verbose_name='访视')
scheme_antivira = models.CharField(verbose_name='既往接受过几种方案的抗病毒治疗',max_length=50, blank=True, null=True)
antiviral_name = models.CharField(verbose_name='曾使用的抗病毒药物名称',max_length=50, blank=True, null=True)
prevent_infect = models.CharField(verbose_name='是否接受过复方新诺明预防机会性感染治疗',max_length=50, blank=True, null=True)
whether_take = models.CharField(verbose_name='目前是否仍在服用',max_length=50, blank=True, null=True)
whether_adanon = models.CharField(verbose_name='目前是否使用美沙酮',max_length=50, blank=True, null=True)
date_antitoxic = models.CharField(verbose_name='抗毒治疗开始日期',max_length=50, blank=True, null=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "V1C"
verbose_name_plural = verbose_name class V2A(models.Model):
'''
V2A
'''
formame = models.CharField(verbose_name='Modelform名称', max_length=50, blank=True, null=True)
v2a_center = models.ForeignKey(Edc_Center, verbose_name='中心')
v2a_patient = models.ForeignKey(Edc_Patient,verbose_name='病人')
v2a_visit = models.ForeignKey(Edc_Visit, verbose_name='访视')
patient_died = models.CharField(verbose_name='病人是否死亡或转出',max_length=50, blank=True, null=True)
cause_termination = models.CharField(verbose_name='终止原因',max_length=50, blank=True, null=True)
date_death = models.CharField(verbose_name='死亡日期',max_length=50, blank=True, null=True)
cause_death = models.CharField(verbose_name='死亡原因',max_length=50, blank=True, null=True)
transfer_date = models.CharField(verbose_name='转出日期',max_length=50, blank=True, null=True)
flup_content = models.CharField(verbose_name='本次随访内容',max_length=50, blank=True, null=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "V2A"
verbose_name_plural = verbose_name class V2B(models.Model):
'''
v2b
'''
formame = models.CharField(verbose_name='Modelform名称', max_length=50, blank=True, null=True)
v2b_center = models.ForeignKey(Edc_Center, verbose_name='中心')
v2b_patient = models.ForeignKey(Edc_Patient,verbose_name='病人')
v2b_visit = models.ForeignKey(Edc_Visit, verbose_name='访视')
clinical_stages = models.CharField(verbose_name='目前病人WHO临床分期',max_length=50, blank=True, null=True)
aids_disease = models.CharField(verbose_name='自上次访视,是否出现过以下艾滋病相关病症',max_length=50, blank=True, null=True)
skin_damage = models.CharField(verbose_name='皮肤损害',max_length=50, blank=True, null=True)
disposal_method = models.CharField(verbose_name='处置方式',max_length=50, blank=True, null=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "V2B"
verbose_name_plural = verbose_name class V2D(models.Model):
'''
V2D
'''
formame = models.CharField(verbose_name='Modelform名称', max_length=50, blank=True, null=True)
v2d_center = models.ForeignKey(Edc_Center, verbose_name='中心')
v2d_patient = models.ForeignKey(Edc_Patient,verbose_name='病人')
v2d_visit = models.ForeignKey(Edc_Visit, verbose_name='访视')
infection_treatment = models.CharField(verbose_name='是否接受过复方新诺明预防机会性感染治疗',max_length=50, blank=True, null=True)
if_adanon = models.CharField(verbose_name='目前是否使用美沙酮',max_length=50, blank=True, null=True)
clinical_disposal = models.CharField(verbose_name='临床处置',max_length=50, blank=True, null=True)
change_medicine = models.CharField(verbose_name='换药原因',max_length=50, blank=True, null=True)
other_dressing = models.CharField(verbose_name='其他换药原因',max_length=50, blank=True, null=True)
change_reaction = models.CharField(verbose_name='换药具体副反应',max_length=50, blank=True, null=True)
cause_drug = models.CharField(verbose_name='停药原因',max_length=50, blank=True, null=True)
other_drug = models.CharField(verbose_name='其他停药原因',max_length=50, blank=True, null=True)
change_drug = models.CharField(verbose_name='停药具体副反应',max_length=50, blank=True, null=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "V2D"
verbose_name_plural = verbose_name class Xcg(models.Model):
'''
血常规
'''
formame = models.CharField(verbose_name='Modelform名称', max_length=50, blank=True, null=True)
xcg_center = models.ForeignKey(Edc_Center, verbose_name='中心')
xcg_patient = models.ForeignKey(Edc_Patient,verbose_name='病人')
xcg_visit = models.ForeignKey(Edc_Visit, verbose_name='访视')
collection_date = models.DateTimeField(verbose_name='采血日期',blank=True, null=True)
leucocyte_count = models.CharField(verbose_name='白细胞计数',max_length=50, blank=True, null=True)
lymphocyte_count = models.CharField(verbose_name='总淋巴细胞计数',max_length=50, blank=True, null=True)
platelet_count = models.CharField(verbose_name='血小板计数',max_length=50, blank=True, null=True)
xcg_hemoglobin = models.CharField(verbose_name='血红蛋白',max_length=50, blank=True, null=True)
neutrophil_count = models.CharField(verbose_name='中性粒细胞计数',max_length=50, blank=True, null=True)
red_number = models.CharField(verbose_name='红细胞总数',max_length=50, blank=True, null=True)
red_volume = models.CharField(verbose_name='平均红细胞容积',max_length=50, blank=True, null=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "血常规"
verbose_name_plural = verbose_name class Xdfm(models.Model):
'''
血淀粉酶
'''
formame = models.CharField(verbose_name='Modelform名称', max_length=50, blank=True, null=True)
xdfm_center = models.ForeignKey(Edc_Center, verbose_name='中心')
xdfm_patient = models.ForeignKey(Edc_Patient,verbose_name='病人')
xdfm_visit = models.ForeignKey(Edc_Visit, verbose_name='访视')
collection_date = models.DateTimeField(verbose_name='采血日期',blank=True, null=True)
blood_amylase = models.CharField(verbose_name='血淀粉酶',max_length=50, blank=True, null=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "血淀粉酶"
verbose_name_plural = verbose_name class Xt(models.Model):
'''
血糖
'''
formame = models.CharField(verbose_name='Modelform名称',max_length=50, blank=True, null=True)
xt_center = models.ForeignKey(Edc_Center, verbose_name='中心')
xt_patient = models.ForeignKey(Edc_Patient,verbose_name='病人')
xt_visit = models.ForeignKey(Edc_Visit, verbose_name='访视')
collection_date = models.DateTimeField(verbose_name='采血日期',blank=True, null=True)
blood_sugar = models.CharField(verbose_name='血糖',max_length=50, blank=True, null=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "血糖"
verbose_name_plural = verbose_name class Xzsx(models.Model):
'''
血脂四项
'''
formame = models.CharField(verbose_name='Modelform名称', max_length=50, blank=True, null=True)
xzsx_center = models.ForeignKey(Edc_Center, verbose_name='中心')
xzsx_patient = models.ForeignKey(Edc_Patient,verbose_name='病人')
xzsx_visit = models.ForeignKey(Edc_Visit, verbose_name='访视')
collection_date = models.DateTimeField(verbose_name='采血日期',blank=True, null=True)
xzsx_triglyceride = models.CharField(verbose_name='甘油三酯',max_length=50, blank=True, null=True)
total_cholesterol = models.CharField(verbose_name='总胆固醇',max_length=50, blank=True, null=True)
low_lipoprotein = models.CharField(verbose_name='低密度脂蛋白',max_length=50, blank=True, null=True)
high_lipoprotein = models.CharField(verbose_name='高密度脂蛋白',max_length=50, blank=True, null=True)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "血脂四项"
verbose_name_plural = verbose_name

Model

2.ModelForm的定义

from django import forms
from django.forms import ModelForm
from .models import Dr,Eg,Ggn,Ncg,Sxqgn,Tr,V1A,V1C,V2A,V2B,V2D,Xcg,Xdfm,Xt,Xzsx class DrForm(ModelForm):
class Meta:
model = Dr
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class EgForm(ModelForm):
class Meta:
model = Eg
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class GgnForm(ModelForm):
class Meta:
model = Ggn
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class NcgForm(ModelForm):
class Meta:
model = Ncg
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class SxqgnForm(ModelForm):
class Meta:
model = Sxqgn
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class TrForm(ModelForm):
class Meta:
model = Tr
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class V1AForm(ModelForm):
class Meta:
model = V1A
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class V1CForm(ModelForm):
class Meta:
model = V1C
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class V2AForm(ModelForm):
class Meta:
model = V2A
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class V2BForm(ModelForm):
class Meta:
model = V2B
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class V2DForm(ModelForm):
class Meta:
model = V2D
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class V2DForm(ModelForm):
class Meta:
model = V2D
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class XcgForm(ModelForm):
class Meta:
model = Xcg
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class XdfmForm(ModelForm):
class Meta:
model = Xdfm
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class XtForm(ModelForm):
class Meta:
model = Xt
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
} class XzsxForm(ModelForm):
class Meta:
model = Xzsx
localized_fields = ('__all__') exclude = ['add_time'] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
}

ModelForm的定义

3.View逻辑的写法

from django.shortcuts import render
import os
import re
import json
from mfor_verity.settings import MEDIA_ROOT
from django.contrib.auth.decorators import login_required
# 指定返回给用户的类型
from django.http import HttpResponse
from django.shortcuts import render
from django.utils.decorators import method_decorator
from django.views.generic.base import View
from django.core import serializers
from .forms import DrForm,EgForm,GgnForm,NcgForm,SxqgnForm,TrForm,V1AForm,V1CForm,V2AForm,V2BForm,V2DForm,XcgForm,XdfmForm,XtForm,XzsxForm from django.forms.formsets import formset_factory
from project_contrast.models import Edc_Project,Edc_Center,Edc_Patient,Edc_Visit,Edc_Form
from users.models import UserProfile
# Create your views here. class ProjectFormSave(View):
"""
保存表单信息
"""
def post(self,request): #在model中统一定义一个字段为modelform的名称,
# 通过前端的填写先任意匹配一个modelfrom得到这个字段的名称后,
# 进行真正modelform的数据获取
form = XtForm(request.POST)
print(form.data) # eval() 字符串转变量 代表modelform 如:DrForm
formset = eval(form.data.get('formame'))
form = formset(request.POST) if form.is_valid():
#注释为保存外键的写法,前端没有输入外键内容的情况下,本次为前端通过
#点击赋予值进行隐藏
# instance = form.save(commit=False) # instance.xt_center_id = edc_center_id
# instance.xt_patient_id = edc_patient_id
# instance.xt_visit_id = edc_visit_id
# instance.save()
form.save()
else:
error = form.errors #错误信息
# return render(request, 'forms.html', {'form': form, 'error': error})
print(error)
return HttpResponse('{"status":"fail"}', content_type='application/json') return HttpResponse('{"status":"success"}', content_type='application/json') def get(self,request):
"""
生成前端的表单文件添加一定的样式注意:html中一定要加name属性和model的name一致
""" model_form_name = request.GET.get('model_form_name','') #字符串转变量
formset = eval(model_form_name+'Form()')
print(formset)
all_html = '' for form in formset:
all_html += '<div class="form-group">' \
'<label for="{}" class="col-sm-4 control-label">{}' \
'</label><div class="col-sm-8">' \
'<input type="text" name="{}" class="form-control" id="{}">' \
'</div></div>'.format(form.id_for_label,form.label,form.html_name,form.id_for_label) all_datas = {
'all_html':all_html
} return HttpResponse(json.dumps(all_datas), content_type='application/json')

4.URL的写法

    # 返回对照页面
url(r'^control_page/$', Control_Page.as_view(), name='control_page'), #保存提交的表单信息
url(r'^projectformsave/$', ProjectFormSave.as_view(), name='projectformsave'),

5.Jquery的ajax的写法

var model_form_name = '';
//点击右侧表单信息获取相应model生成form表单
$('#id_form_menu>a').each(function(index){
$(this).on('click',function(){ //获取model的名称
model_form_name = $(this).children('span').text();
console.log(model_form_name); $.get('/projectformsave/',{'model_form_name':model_form_name},function(data){
console.log(data);
console.log(data.all_html);
$('#project_form_edc').empty();
$('#project_form_edc').append(data.all_html);
})
})
}); //Ajax异步提交表单提交表单
$('#id_edc_submit').on('click',function(){ var data = $("#project_form_edc").serialize(); $.ajax({
cache: false,
type: "POST",
url: "/projectformsave/",
dataType:'json',
async: true,
data:data, success: function(data) { },
beforeSend: function(xhr, settings) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}); });

6.HTML的写法先通过点击来获取表单的html内容,生成表单然后ajax异步提交表单

                <form id = "project_form_edc" action="/projectformsave/" class="form-horizontal" role="form">
{# <div class="form-group">#}
{# <label for="firstname" class="col-sm-4 control-label">名字</label>#}
{# <div class="col-sm-8">#}
{# <input type="text" class="form-control" id="firstname">#}
{# </div>#}
{# </div>#}
{# <div class="form-group">#}
{# <label for="lastname" class="col-sm-4 control-label">化疗周期</label>#}
{# <div class="col-sm-8">#}
{# <input type="text" class="form-control" id="lastname">#}
{# </div>#}
{# </div>#}
{# <div class="modal-footer">#}
{# <button type="submit" id = "jsLoginBtn" class="btn btn-primary">#}
{# 提交更改#}
{# </button>#}
{# </div>#} </form>
<div class="modal-footer">
<button type="button" id = "id_edc_submit" class="btn btn-primary">
提交表单
</button>
</div>
</section>

Django 用ModelForm批量保存form表单(非常实用的方法) mfor_verity项目的更多相关文章

  1. Django 构建模板form表单的两种方法

    通常情况下,我们想构建一张表单时会在模板文件login.html中写入 <form action="/your-name/" method="post"& ...

  2. Ajax提交Form表单的一种方法

    待提交的表单 <form id="updatePublicKey" enctype="multipart/form-data"> <div c ...

  3. 使用js提交form表单的两种方法

    提交form表单的时候瑶族一些简单的验证,验证完后才能提交,避免无效提交. 1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在前端页面写:有两种方法,一种是用sub ...

  4. form表单重置、清空方法记录

    myform 是form的id属性值 1.调用reset()方法 function fomrReset() { document.getElementById("myform"). ...

  5. formset批量处理form表单数据

    Formset(表单集)是多个表单的集合.Formset在Web开发中应用很普遍,它可以让用户在同一个页面上提交多张表单,一键添加多个数据 class StudentStudyRecordModel( ...

  6. form表单转Json提交方法

    先将表单数值转换成数组存储,存储成的格式为[{"name":"","value":""},.....}] var for ...

  7. vue form表单绑定事件与方法

    使用v-on绑定事件 <button @click="hello">Hello</button><br /> <button @click ...

  8. php 解决和避免form表单重复提交的方法

    在提交表单的时候,可能遇到网速等导致页面突然加载变慢,用户重复地点击提交按钮,将在数据库产生多条数据,导致不可控情况. 比如下面的情况就会导致表单重复提交: 点击提交按钮两次. 点击刷新按钮. 使用浏 ...

  9. jquery中ajax序列化提交form表单的几种方法。

    一,ajax主流的方法 $.ajax({ type: 'post', url: 'your url', data: $("form").serialize(), success: ...

随机推荐

  1. global语句(python学习手册422页)

    # -*- coding: cp936 -*- #python 27 #xiaodeng #global语句(python学习手册422页) #实际上就是一个名为__builtin__的模块,但是必须 ...

  2. MySQL必知必会笔记(六)存储过程 游标 触发器

    留印:http://blog.sina.com.cn/s/articlelist_1254871964_5_1.html   第二十三章 使用存储过程     MySQL5 中添加了存储过程的支持. ...

  3. CentOS 6.4安装配置LAMP服务器

    CentOS 6.4安装配置LAMP服务器(Apache+PHP5+MySQL) 作者: 字体:[增加 减小] 类型:转载 这篇文章主要介绍了CentOS 6.4安装配置LAMP服务器(Apache+ ...

  4. C#线程访问winform窗体控件

    参考地址:http://www.cnblogs.com/jason-liu-blogs/archive/2012/09/08/2677008.html 添加: public Form() { Init ...

  5. smokeping with tcpping centos 7 环境

    本次环境采用centos7,使用centos6的同学就洗洗睡吧,此外一定要做好时间同步,并且关闭防火墙以及selinux,不然安装可能会失败的哦.时间同步方式如下: yum install ntpda ...

  6. aop:declare-parents注解

    http://www.blogjava.net/jackfrued/archive/2010/02/27/314060.html <aop:aspect> <aop:declare- ...

  7. iOS archiveRootObject 归档失败问题

    归档失败问题出在路径上,NSHomeDirectory() NSString *stringPath = [NSSearchPathForDirectoriesInDomains(NSDocument ...

  8. linux 常用awk命令

    linux awk命令详解awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每 ...

  9. 基于 html5 geolocation来获取经纬度地址(copy)

    geolocation来获取经纬度地址 以前如果要获取互联网用户所在地都是根据用户的IP地址来获取地理位置,这样获取到的数据和真实数据有很大的偏差.为了获取更加精确的位置,可以使用了html5的geo ...

  10. AsyncTask与ProgressDialog使用笔记(安卓在背景运行耗时任务)

    AsyncTask用在需要在ui线程中调用.在背景线程中执行耗时任务.并且在ui线程中返回结果的场合.下面就是一个在背景中运行的AsyncTask的实现DownloadDBTask, Android中 ...