Django и вычисляемые поля в устаревшей базе данных - PullRequest
2 голосов
/ 13 августа 2011

Я постепенно заменяю унаследованный интерфейс базы данных системой на основе Django.Все модели Managed = False, чтобы сохранить исходную структуру БД.

Однако я столкнулся с проблемой, когда вычисляется поле в таблице.Поле определено в (псевдо) sql как full_name = fname |||| lname.

Я могу определить поле full_name как поле char;и я могу прочитать его без проблем, однако любая попытка обновить запись приводит к ошибке обновления в этом поле.

Я могу использовать @property;но это копирует функциональность в django, а не отображает результаты из самой базы данных.Использование этого подхода вызовет проблемы с более сложными полями (в таблицах, которые мне еще предстоит получить), которые определены с помощью UDF.

Что действительно необходимо, так это атрибут «read_only» или «computed» в самой модели.;Каков наилучший способ достичь этого?

1 Ответ

0 голосов
/ 13 августа 2011

Вы просто хотите определить метод в своем классе?Что-то вроде:

def Person(models.Model):
  fname=models.CharField(...)
  lname=models.CharField(...)

  def fullname(self):
     return self.fname+" "+self.lname

(не совсем уверен, что означает Managed = False ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...