Skip to main content
 首页 » 编程设计

python之为 django 模型中的每个字段添加置信度值

2025年05月04日18开发

想象一个像建筑物这样的 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 时有效