我想就如何进一步开发我的模型和表格提出一些建议。
这个模型目前允许我保存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/