我可以在同一个Django模型中引用一个字段吗?

时间:2013-04-06 01:15:16

标签: python django

我正在尝试设计一些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)

我觉得这很难看。除了在数据库中存储一些值之外,是否有更好的方法来引用同一模型中的字段?

谢谢:)

1 个答案:

答案 0 :(得分:1)

这几乎和它一样好!

你可以在这里做的改进是使用BooleanField,因为你只存储一个标志,而实际上并不是一个比单个位大很多的1字符文本值。