#django #django-models
#django #django-модели
Вопрос:
Файл CharFiled сохранен со значением, но я хочу внести некоторые изменения в сохраненное значение при его чтении, но значение в базе данных не меняется. Как мне следует поступить? мой код выглядит следующим образом:
class TFile(models.Model):
lang = models.CharField(max_length=100, choices=LANGUAGE.choices())
domain = models.ForeignKey(TDomain, null=True, verbose_name="领域", related_name="domain", on_delete=models.SET_NULL)
type = models.CharField(max_length=100, choices=FILETYPE.choices())
host = models.CharField(max_length=100, null=True)
path = PathFiled(max_length=1000)
например: я задаю path значение как «/ home / work / workspace», но я хочу прочитать его как «/ workspace», что мне следует делать, или какую функцию я должен переопределить в моем пользовательском поле пути.
Комментарии:
1.
@property
простой способ, но вы должны добавить больше деталей и показать код.2. Я добавляю некоторые подробности, пожалуйста, просмотрите этот вопрос еще раз.
Ответ №1:
Как упоминал Bear в комментарии, допустим, у меня есть модель под названием Menu с двумя полями и свойством, которое я могу определить в классе для представления измененной версии значения db.
class Menu(models.Model):
identifier = models.CharField(verbose_name=_("identifier"), max_length=100)
site = models.ForeignKey(Site, on_delete=models.PROTECT)
def __str__(self):
return self.identifier
@property
def root_id(self)
# Do whatever modification you would like here... for example
# below I prefix "root-" to an identifier
return "root-" self.identifier
Комментарии:
1. Я добавляю некоторые подробности, пожалуйста, просмотрите этот вопрос еще раз.
2. @XiaolinWu чего ты еще хочешь от ответа?
3. как упоминалось в примере, я хочу снова указать path как path, изменив его значение только при чтении.
4. путь, который вы можете использовать как obj.path и использовать новый атрибут в качестве свойства