我想就如何进一步开发我的模型和表格提出一些建议。
这个模型目前允许我保存M2M关系中与疾病和状态相关的选项。如果我想保存结果和与状态、疾病和选项相关联的价值,我将如何进一步构建这个模型?
例如,结果将具有与之关联的特定选项。选项将是一个特定的状态,它将有一个特定的疾病与之相关。对于链接到特定选项的每个结果,都将为其分配一个值。
我想我需要一个中间表,因为用户将分配给它的结果值。我很困惑如何把结果和选项联系起来,因为选项是M2M。

class Option(models.Model):
    disease = models.ForeignKey(Disease)
    option = models.CharField(max_length=300)

class Outcome(models.Model):
   disease = models.ForeignKey(Disease)
   outcome = models.CharField(max_length=200)

class DiseaseState(models.Model):
   state = models.CharField(max_length=300)
   disease = models.ForeignKey(Disease)
   option = models.ManyToManyField(Option, blank=True)
   #outcome = models.ManyToManyField(Outcome, blank=True) #will adding this solve my use case? It does not seem like outcome will link to option.

更新:
为了澄清一点:一种疾病有一种疾病状态。疾病国家有选择权。选择有结果。结果有一个分配给它的值。选项和结果都是列表,用户可以从列表中选择。

最佳答案

我不完全确定我是否能理解,但你有几个选择。
第一种方法是手动创建outcome和diseasestate之间的中间表

class DiseaseStateOutcome(models.Model):
    unique_together = (('disease_state', 'outcome'),)

    disease_state = models.ForeignKey(DiseaseState)
    outcome = models.ForeignKey(Outcome)

    #option foreign key, or m2m relation to option here

你的另一个选择是,如果你只想要一个与疾病状态/结果对相关的选项,那就是把一个外键从一个结果放到另一个选项上。
class Outcome(models.Model):
    #Your other fields here
    option = models.ForeignKey(Option)

关于python - 具有2 m2m关系的数据库设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18386446/

10-16 20:16