【问题标题】:How to undisplay the field with empty value in django admin?如何在 django admin 中取消显示具有空值的字段?
【发布时间】:2018-03-23 16:32:07
【问题描述】:

我目前正在研究 django。我在 models.py 中创建了 4 个类,其中之一是 ReactionMeta 类。该类有62列,定义如下:

class Reactionsmeta(models.Model):

id = models.ForeignKey('Reactions', db_column='id', primary_key=True, max_length=255, on_delete=models.CASCADE)
name = models.CharField(max_length=255, blank=True, null=True)
metabolite1 = models.ForeignKey('Metabolites', db_column='metabolite1', blank=True, null=True,
                                on_delete=models.CASCADE)
stoichiometry1 = models.CharField(max_length=255, blank=True, null=True)
metabolite2 = models.ForeignKey('Metabolites', db_column='metabolite2', blank=True, null=True,
                                on_delete=models.CASCADE, related_name='+')
stoichiometry2 = models.CharField(max_length=255, blank=True, null=True)
metabolite3 = models.ForeignKey('Metabolites', db_column='metabolite3', blank=True, null=True,
                               on_delete=models.CASCADE, related_name='+')
stoichiometry3 = models.CharField(max_length=255, blank=True, null=True)
metabolite4 = models.ForeignKey('Metabolites', db_column='metabolite4', blank=True, null=True,
                                on_delete=models.CASCADE, related_name='+')
#...

有些反应,可能有 6 个代谢物,但是,有些反应可能只有 2 个代谢物和化学计量,这意味着该反应在代谢物 3、4、5、6...列和化学计量 3 中没有价值,4,5,6...列。

在这种情况下,我怎样才能只显示带有数据的字符字段,而在 django-admin 中不显示那些没有值的字符字段?

【问题讨论】:

  • 让我弄清楚这一点!所以反应可以有1个或多个(化学计量和代谢物)?
  • 是的,因为一个反应可能包含多种代谢物,例如:a + c +b + d -> e + f

标签: python django django-models django-admin fieldtype


【解决方案1】:

所以我认为这里存在模型设计问题。对于我的情况,我会这样做如下

class ReactionMeta(models.Model):
  reaction = models.ForeignKey(Reaction, ..)
  name = models.CharField(..)
  data = models.ForeignKey(Data, ..)

构造数据类以保存化学计量和代谢物

class Data(models.Model):
  stoichiometry = models.CharField(..)
  metabolite = models.ForeignKey(..)

【讨论】:

  • 感谢您的建议。但是我对数据模型还是很不清楚,如果你把反应和代谢物,化学计量分成两个不同的类别,那我怎么知道哪些反应对应哪些代谢物和化学计量呢?
猜你喜欢
  • 2017-03-13
  • 1970-01-01
  • 2023-01-03
  • 2012-09-11
  • 2018-06-17
  • 2021-04-28
  • 1970-01-01
  • 2021-09-18
  • 2012-01-03
相关资源
最近更新 更多