真的需要一些帮助,
如何使用django模型表示一种类似下面的数据? ,以便我可以构建表单来添加/编辑/删除条目,并有效地构建一些报告?
这是为了说明的目的,根据疾病类型,患者的年龄组,进一步分为男性和女性,然后进入反复发生和新发生的情况,每年每个月发生疾病的数量表。
父组中的出现条目将是其子组的聚合。
year : 2014 month : January
------------------------------------------------------------------------------
| age_group1 | age_group2 | etc ..
| male | female |male | female |
| rec|new|rec|new |rec|new|rec|new |
----------------------------------------------------------------------
infectious disease group : 11 5
viral disease subgroup : 8 0 etc ...
viral_disease1 : 4 0
viral disease2 : 4 0
bacterial disease subgroup : 3 5
bacter_disease1 : 1 4
bacter_disease2 : 2 1
degenerative disease group :
neural_disease subgroup :
neur_disease1 :
neur_disease2 :
... etc ..
答案 0 :(得分:2)
这是您可以使用的一种设计。它允许灵活定义疾病和报告。如果需要,您可以创建一个新的Report
模型,其中包含开始和结束字段以及一个到DiseaseReport
模型的ManyToMany。此设计假设您已批量提供数据。如果您获得了患者的个人信息,则必须对其进行修改。
class AgeGroup(models.Model):
pass
class PatientGroup(models.Model):
NEW = 0
RECURRING = 1
PATIENT_STATES = (
(NEW, "New"),
(RECURRING, "Recurring"),
)
age_group = models.ForeignKey(AgeGroup)
is_male = models.BooleanField()
state = models.SmallIntegerField(choices=PATIENT_STATES, default=NEW)
DiseaseGroup(models.Model):
parent_disease = models.ForeignKey(DiseaseGroup, null=True, blank=True)
name = models.CharField(max_length=100)
Disease(models.Model):
disease_group = models.ForeignKey(DiseaseGroup)
name = models.CharField(max_length=100)
DiseaseReport(models.Model):
start = models.DateField()
end = models.DateField()
disease = models.ForeignKey(Disease)
patient_group = models.ForeignKey(PatientGroup)
cases = models.IntegerField(default=0)