我目前正在django 2.0.2管理页面上工作。我有三个表格,分别是‘代谢物’、‘基因’和‘反应’。每个类别的结构定义如下:
class Genes(models.Model):
id = models.CharField(primary_key=True, max_length=255)
name = models.CharField(max_length=255, blank=True, null=True)
notes = models.CharField(max_length=255, blank=True, null=True)
class Meta:
managed = False
db_table = 'Genes'
class Metabolites(models.Model):
id = models.CharField(primary_key=True, max_length=255)
name = models.CharField(max_length=255, blank=True, null=True)
compartment = models.CharField(max_length=255, blank=True, null=True)
charge = models.CharField(max_length=255, blank=True, null=True)
formula = models.CharField(max_length=255, blank=True, null=True)
notes = models.CharField(max_length=255, blank=True, null=True)
class Meta:
managed = False
db_table = 'Metabolites'
class Reactions(models.Model):
id = models.CharField(max_length=255, primary_key=True)
name = models.CharField(max_length=255, blank=True, null=True)
metabolites = models.TextField(blank=True, null=True)
lower_bound = models.CharField(max_length=255, blank=True, null=True)
upper_bound = models.CharField(max_length=255, blank=True, null=True)
gene_reaction_rule = models.TextField(blank=True, null=True)
subsystem = models.CharField(max_length=255, blank=True, null=True)
notes = models.CharField(max_length=255, blank=True, null=True)
class Meta:
managed = False
db_table = 'Reactions'
如您所见,“反应”类还包括“代谢物”成分。一个典型的反应实际上涉及两种以上的代谢物。我想做的是,在管理页面(不是每个类的页面)上创建一个搜索字段,当我键入反应id时,搜索结果可以显示反应和所有涉及的代谢物,当我键入代谢物时,搜索结果可以显示该代谢物的信息和该代谢物涉及的所有反应。你知道吗
有可能吗?有人能告诉我怎么做吗?你知道吗
谢谢你帮助我!你知道吗
编辑:
这描述了实现这一点的“老派”方式。这似乎是django的多对多字段的一个用例。我在我的项目中没有遇到这种需求;因此,我还没有研究django中的多对多功能。我建议阅读django文档,了解如何使用多对多字段。你知道吗
这里描述的方法将实现数据中所需的连接。但是,我怀疑使用多对多字段设置django管理会更简单、更直接。你知道吗
结束编辑
您想为
metabolites_in_reaction
创建另一个模型,它只包含自己的主键、反应的外键和代谢物的外键。你知道吗多对多字段在这里可能也很合适;我还没有真正弄清楚多对多字段。你知道吗
编辑2:
在模型中进行这些更改之后,您将需要进行并应用迁移以将更改应用到数据库。你知道吗
相关问题 更多 >
编程相关推荐