0

我正在尝试设计一些 Django 模型,但官方文档和 Stack Overflow 都没有给出答案。

问题在于学生模型:一个学生有一个英文名字和一个非英文名字(例如中文)。然而,他们通常更喜欢被称为一个或另一个,而且他们的父母称他们为一个或另一个(有时父母有不同的偏好:)

我想将此首选项存储在学生模型中。现在,我正在存储一个文本值,该值指示学生和家长的首选名称:

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)

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

谢谢 :)

4

1 回答 1

1

这几乎是最好的!

您可以在此处进行的改进是使用BooleanFields,因为您只存储一个标志,而不是实际上比一位大得多的 1 字符文本值。

于 2013-04-06T02:34:44.463 回答