想象一个像建筑物这样的 django 模型:
class Building(models.Model):
address = models.CharField('address')
age = models.IntegerField('age')
我想为每个字段设置置信度值,例如我 90% 确定地址是“768 5th Ave, New York”,但 100% 确定该建筑物已有 30 年历史。使用元组进行实例化并为每个字段设置置信度值会很棒:
>>> b = Building(
address=("768 5th Ave, New York", 0.9),
age=(34, 1.0))
>>> b.address
'768 5th Ave, New York'
>>> b.address.confidence
0.9
或者至少是这样的:
>>> b.confidences['address']
0.9
我想将置信度值应用到我当前的所有 Django 模型,所以我正在寻找最优雅和通用的方法来实现这一点,希望对我已有的模型定义进行最少的更改。显然下面很难做到...
class Building(models.Model):
address = models.CharField('address')
address_confidence = models.FloatField('address_confidence')
age = models.IntegerField('age')
age_confidence = models.FloatField('age_confidence')
一些我能想到但不确定的事情:
- 拥有一个为每个字段创建置信度值的基础模型(可能在 init 期间),然后将其作为我所有模型的基础而不是 models.Model?
- 创建一个具有置信度值的自定义字段,并负责在读取/写入数据库时如何处理它?</li>
- 有另一个带有置信度字段的模型并使用 ForeignKey 链接到它吗?
谢谢, H
请您参考如下方法:
如果您使用最新的 Django 和 Postgres 作为后端,您可以使用 HStoreField .这将允许您以 python dict() 的形式存储数据
{'address': '768 5th Ave, New York', 'confidence': 0.9}
它是数据库中的单个字段,但具有极大的灵 active
另一个选项是 ArrayField .但是您不能像 HStoreField 那样标记这些值。
这仅在您的后端是 Postgres 时有效
