我試圖設計一些Django模型,官方文檔和Stack Overflow都沒有得到答案。我可以在同一個Django模型中引用一個字段嗎?
問題出在學生模式中:學生有英文名和非英文名(例如中文)。然而,他們往往更喜歡被稱爲一個或另一個,而且,他們的父母稱他們爲一個或另一個(有時家長有不同的偏好:)
我想存儲這種偏好在學生模型。現在我正在存儲一個文本值,指示學生和家長的首選名稱:
class Student(models.Model):
ENGLISH_NAME = 'E'
OTHER_NAME = 'O'
PREFERRED_NAME_CHOICES = (
(ENGLISH_NAME, 'English Name'),
(OTHER_NAME, 'Other Name (any language)'),
)
PREFERRED_NAME_FIELDS = {
ENGLISH_NAME: 'first_name_english',
OTHER_NAME: 'first_name_other',
}
first_name_english = models.CharField(max_length=50)
first_name_other = models.CharField(max_length=50)
child_preferred_name = models.CharField(max_length=1, choices=PREFERRED_NAME_CHOICES)
parent_preferred_name = models.CharField(max_length=1, choices=PREFERRED_NAME_CHOICES)
我認爲這很醜陋。除了在數據庫中存儲一些值之外,是否有更好的方法來引用同一模型中的字段?
謝謝:)
我只是保持簡單,並將標誌存儲在'child_preferred'和'parent_preferred'中 - 就像您聲明的那樣。如果您將冗餘數據存儲在數據庫中,則表明您做錯了什麼。 – karthikr 2013-04-06 02:12:32