Python 如何覆盖Django中特定列的对象点访问?
假设我有一个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中当前存在的常用流 返回对
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
中的逻辑返回城市如果另一个表中存在一个新城市,您所说的是什么意思?