我可以在同一张桌子中为一种疾病添加多种症状吗?

时间:2017-09-02 11:45:35

标签: python django

示例:

我有一个名为疾病的表,它包含四个字段:

  1. DiseaseId
  2. DiseaseName
  3. DiseaseType
  4. 症状
  5. 对于一种疾病,可能存在许多症状。那么,我可以根据需要在一个字段症状中存储尽可能多的数据吗?怎么样?如果我不能解决另一个解决方案呢?

3 个答案:

答案 0 :(得分:1)

您可以制作症状表,然后使用一对多关系将其关联起来。

答案 1 :(得分:1)

我认为最好的方法是使用这样的一对多关系:

class Disease(models.Model):
    # insert fields

class Symptom(models.Model):
    disease = models.ForeignKey(Disease, related_name='symptoms')
    # insert other fields

然后,您将能够通过related_name获得疾病症状:

disease.symptoms.all()

但是如果你想为它们使用一个表,你可以使用JSONField

class Disease(models.Model):
    symptoms = models.JSONField()

然后,您可以创建这样的疾病:

Disease.objects.create(symptoms=['first', 'second'])

但是,它只是PostgreSQL。因此,如果您不使用Postgres,则无法使用它。

希望它有所帮助!

答案 2 :(得分:0)

使用列表:

disease = ["Id", "Name", "Type", ["symptom_1", "symptom_2", ..., "symptom_n"]]

或(更好)字典:

disease = {
    "DiseaseId" : "ID",
    "DiseaseName" : "Name",
    "DiseaseType" : "Type",
    "Symptoms" : ["symptom_1", "symptom_2", ..., "symptom_n"]
}