Скажем, у меня есть объект Django, который я отфильтровал следующим образом:
details_obj = DetailsTable.objects.get(user_name='nap')
details_obj.user_name
'nap'
details_obj.city
'Paris'
details_obj.age
22
Теперь я хочу переопределить доступ к одному конкретному столбцу для достижения чего-то вроде:
# if a new city exists in a different table
if updated_city_exists:
# return the updated city instead
return 'London'
else:
# the usual flow that currently exists in Django
return obj.city
# is user accesses city like
details_obj.city
'London'
# London returned here as updated city exists for this user
Я не могу реально изменить модель существующего DetailsTable
, потому что это уже существующий код, который использовался много раз.
Также в коде есть много мест, где точка доступа к городу уже имеет место.Поэтому я хотел бы переопределить существующий метод для доступа к значению столбца.
Я также не хочу обновлять столбец city
в существующем столбце DetialsTable
.
Могу ли я в любом случае добиться этого?Единственное, о чем я мог подумать, - написать функцию, которая вернула бы обновленный город, если он существует, и использовать эту функцию везде, но мне придется заменить большую часть существующего кода, если я сделаю это.