Python 如何覆盖Django中特定列的对象点访问?

Python 如何覆盖Django中特定列的对象点访问?,python,django,Python,Django,假设我有一个Django对象,我像这样过滤: details_obj = DetailsTable.objects.get(user_name='nap') details_obj.user_name 'nap' details_obj.city 'Paris' details_obj.age 22 现在我要做的是覆盖一个特定列的访问权限,以实现以下功能: #如果另一个表中存在新城市 如果存在更新的城市: #返回更新后的城市 返回“伦敦” 其他: #Django中当前存在的常用流 返回对

假设我有一个Django对象,我像这样过滤:

details_obj = DetailsTable.objects.get(user_name='nap')

details_obj.user_name
'nap'

details_obj.city
'Paris'

details_obj.age
22
现在我要做的是覆盖一个特定列的访问权限,以实现以下功能:

#如果另一个表中存在新城市
如果存在更新的城市:
#返回更新后的城市
返回“伦敦”
其他:
#Django中当前存在的常用流
返回对象城市
#用户访问城市像吗
城市详细信息
“伦敦”
#伦敦已返回此处,因为此用户的更新城市已存在
我无法真正修改现有
DetailsTable
的模型,因为它是已经使用了很多次的预先存在的代码

此外,在代码中有很多地方,城市的点访问已经开始。因此,我希望重写现有方法以访问列值

我也不想更新现有
DetialsTable
列中的
city

我有没有办法做到这一点?我能想到的唯一一件事是编写一个函数,如果它存在,它将返回更新的city,并在任何地方使用该函数,但如果我这样做,我将不得不替换大量现有代码。

在您的模型中

@property
def updated_city(self):
    # if a new city exists in a different table
    if updated_city_exists:
        # return the updated city instead
        return 'London'
    # the usual flow that currently exists in Django
    return obj.city

现在,
details\u obj.updated\u city
将根据您在
def updated\u city
中的逻辑返回城市

如果另一个表中存在一个新城市,您所说的
是什么意思?