我正在尝试设计一些Django模型,官方文档和Stack Overflow都没有得到答案。
问题出在学生模型中:学生有英文名称和非英文名称(例如中文)。但是,他们通常更喜欢被称为一个或另一个,而且,他们的父母称他们为一个或另一个(有时父母有不同的偏好:)
我想将此首选项存储在Student模型中。现在我正在存储一个文本值,指示学生和家长的首选名称:
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)
我觉得这很难看。除了在数据库中存储一些值之外,是否有更好的方法来引用同一模型中的字段?
谢谢:)
答案 0 :(得分:1)
这几乎和它一样好!
你可以在这里做的改进是使用BooleanField
,因为你只存储一个标志,而实际上并不是一个比单个位大很多的1字符文本值。