У меня есть модель, в которой я хотел бы указать имя субъекта и его инициалы.(Данные несколько анонимны и отслеживаются по инициалам.)
Прямо сейчас я написал
class Subject(models.Model):
name = models.CharField("Name", max_length=30)
def subject_initials(self):
return ''.join(map(lambda x: '' if len(x)==0 else x[0],
self.name.split(' ')))
# Next line is what I want to do (or something equivalent), but doesn't work with
# NameError: name 'self' is not defined
subject_init = models.CharField("Subject Initials", max_length=5, default=self.subject_initials)
Как указано в последней строке, я бы предпочел иметь возможность иметь инициалы на самом делехраниться в базе данных как поле (независимо от имени), но оно инициализируется значением по умолчанию на основе поля имени.Тем не менее, у меня возникают проблемы, поскольку у моделей django, похоже, нет «я».
Если я изменю строку на subject_init = models.CharField("Subject initials", max_length=2, default=subject_initials)
, я могу выполнить syncdb, но не могу создавать новые темы.
Возможно ли это в django, если для вызываемой функции по умолчанию задано значениекакое-то поле, основанное на значении другого поля?
(Для любопытных причина, по которой я хочу отделить инициалы своего магазина отдельно, в редких случаях, когда странные фамилии могут отличаться от тех, которые я отслеживаю. Например,, кто-то еще решил, что субъект 1 Инициалы «John O'Mallory» являются «JM», а не «JO», и хочет исправить его как администратор.)