Python 我可以引用同一Django模型中的字段吗?

Python 我可以引用同一Django模型中的字段吗?,python,django,Python,Django,我正在尝试设计一些Django模型,但官方文档和堆栈溢出都没有给出答案 问题在学生模型中:学生有一个英文名字和一个非英文名字(例如中文)。然而,他们通常更喜欢被称为一个或另一个,而且他们的父母也会称他们为一个或另一个(有时父母会有不同的偏好:) 我想在学生模型中存储此首选项。现在,我正在存储一个文本值,该值指示学生和家长的首选名称: class Student(models.Model): ENGLISH_NAME = 'E' OTHER_NAME = 'O' PREF

我正在尝试设计一些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)
我觉得那很难看。除了在数据库中存储一些值之外,还有更好的方法引用同一模型中的字段吗


谢谢:)

这是最好的了


这里可以做的一个改进是使用
BooleanField
s,因为您只存储一个标志,而不是一个比一个位大得多的1字符文本值。

我只想保持简单,并将标志存储在
子首选项
父首选项
中-就像您声明的那样。如果你在数据库中存储冗余数据,那你就做错了。啊,好的,谢谢!我绝对不想存储冗余数据(正如karthikr提到的)。我想我现在就用这个,但我认为用布尔场来代替是个好主意。干杯:)