免责声明:我可以随时清除数据库。所以在回答这个问题的时候,请不要关心迁移之类的事情。
假设我有一个具有多个值的模型:
class Compound(models.Model):
color = models.CharField(max_length=20, blank=True, default="")
brand = models.CharField(max_length=200, blank=True, default="")
temperature = models.FloatField(null=True, blank=True)
melting_temp = models.FloatField(null=True, blank=True)
# more (~20) especially numeric values as model fields
现在我想为该模型的每个值添加一个要存储的注解。例如,我想在temperature
模型字段中添加一个注解“measured in winter”。
做这件事的最佳方法是什么?
我的头脑 Storm 想出了:
1.手动添加20个模型字段,如temperature_comment = ...
,但听起来不是很干
1.添加一个大的json字段来存储每个评论。但是我如何创建一个有这样一个json字段的表单呢?因为我想把每个输入字段的相关值分开。我可能不得不使用javascript,这是我想避免的。
1.为每个值添加一个名为Value
的模型,并通过OneToOneField
连接到Compound
。但是如何为Compound
创建一个Form呢?因为我想使用一个Form创建一个Compound
。我不想单独创建每个Value
。而且它也不像以前那么容易。来访问和使用Compound
模型中的值。
我想对于一个经常出现的用例来说,这是一个相当抽象的问题。我不知道为什么我没有找到关于如何完成这个问题的资源。
1条答案
按热度按时间rsaldnfx1#
您可以创建一个 * 抽象基础模型 *:
然后,您可以将该模型混合到您的模型中:
它会自动将
CommentBase
中定义的字段添加到从CommentBase
继承的模型中。