Django模型数据作为预设用于创建其他模型

时间:2017-11-22 09:38:07

标签: python django database django-models foreign-keys

我实际上正在为BioTech实验室编写申请表。我们的想法是准备具有预设产品列表的环境。

还需要处理产品库存。

我尝试了以下结构,但我不知道如何处理预设......

#models.py
class Products(models.Model):
    nutrients = models.CharField(max_length=10)
    globalQuantity = models.FloatField()
    rcvdate = models.DateTimeField()
    user = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
    lot = models.CharField(max_length=50)

class Environments(models.Model):
    lot = models.CharField(max_length=25, unique=True)
    date = models.DateTimeField()
    user = models.ForeignKey(User, on_delete=models.SET_NULL)
    initvolume = models.FloatField()
    preparation = ?

class Presets(models.Model):
    name = models.CharField(max_length=25)
    product = models.ForeignKey('products', on_delete=models.SET_NULL)
    quantity = models.FloatField()

然后想法填充预设,如下所示:

 1. name = preset1 | product = NH4  | quantity = 50
 2. name = preset1 | product = SO4  | quantity = 25
 3. name = preset2 | product = NaCl | quantity = 40
 4. name = preset2 | product = Mn   | quantity = 30

"配方" (如preset1和preset2)包含不同的产品。它必须是动态的,因为用户需要能够添加"食谱"如果他们想要的话。

问题是:"如何使用类预设中定义的一个预设将准备添加到环境中? "

表格的字段是在开头定义的,那么如何根据预设结构处理不同的准备工作?

1 个答案:

答案 0 :(得分:0)

您需要一个额外的模型:Recipe。始终使用您也谈论的内容为数据库建模,这样可以更轻松。假设:预设可以被许多食谱重复使用。

def Recipe(models.Model):
    name = models.CharField()
    presets = models.ManyToManyField(Preset)

def Preset(models.Model):
    product = models.ForeignKey(Product)
    quantity = models.FloatField()

def Environment(model.Model):
    etc...
    preparation = ForeignKey(Recipe)