주제 이름과 이니셜을 포함하고 싶은 모델이 있습니다 (데이터는 다소 익명화되고 이니셜로 추적 됨).
지금 내가 쓴
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를 수행 할 수 있지만 새 제목을 만들 수는 없습니다.
장고에서 이것이 가능합니까, 호출 가능한 함수가 다른 필드의 값을 기반으로 일부 필드에 기본값을 제공하도록 하시겠습니까?
(궁금한 점은 매장 이니셜을 따로 분리하고 싶은 이유는 드물게 이상한 성이 내가 추적하는 것과 다를 수 있기 때문입니다. "JO"가 아닌 "JM"을 수정하고 관리자 권한으로 수정하려고합니다.)
super().save(*args, **kwargs)
없이) 간단히 호출 할 수 있습니다Subject, self
.