Django 模型选择字段命名约定
Django model choice field naming convention
选择字段名称的命名约定是什么。
class Student(models.Model):
ACTIVE= 'active'
INACTIVE= 'inactive'
NOT_AVAILABLE= 'not-available'
STATUS_CHOICES = (
(ACTIVE, 'Active'),
(INACTIVE, 'Inactive'),
(NOT_AVAILABLE, 'Not available'),
)
status = models.CharField(
max_length=15,
choices=STATUS_CHOICES ,
default=INACTIVE,
)
我应该为 NOT_AVAILABLE 字段选择什么命名约定?
不可用 或 not_available
这些 choices
没有什么神奇之处。左元组项(让我们称它们为 keys)存储在 in 数据库中,而右元组项(让我们称它们为 values) 是这些值的 display(因此更易于阅读)。
想法是 values 可以是 culture-variant(例如,取决于翻译的语言),而 keys are invariant:无论设置如何,键通常总是相同的。由于这些存储在数据库中,因此不必非常漂亮,因为程序员应该能够理解它们的含义。但是,如果有人也翻译键,那么这可能意味着在更改服务器的语言之后,Django 不能再解释 包含旧翻译项的行。因为'active'
当然不等于'actief'
(荷兰语翻译)。
我个人的建议是在这里使用下划线,因为它也是一个 Python 标识符,因此您可以稍后将其用于 getattr(..)
操作。例如:
getattr(Student, some_student.status.upper())
如果 some_student
具有 status
'not_available'
字符串,则 可用于获取 STUDENT.NOT_AVAILABLE
,但如前所述,可能有两个原因前者和后者的方法。
选择字段名称的命名约定是什么。
class Student(models.Model):
ACTIVE= 'active'
INACTIVE= 'inactive'
NOT_AVAILABLE= 'not-available'
STATUS_CHOICES = (
(ACTIVE, 'Active'),
(INACTIVE, 'Inactive'),
(NOT_AVAILABLE, 'Not available'),
)
status = models.CharField(
max_length=15,
choices=STATUS_CHOICES ,
default=INACTIVE,
)
我应该为 NOT_AVAILABLE 字段选择什么命名约定?
不可用 或 not_available
这些 choices
没有什么神奇之处。左元组项(让我们称它们为 keys)存储在 in 数据库中,而右元组项(让我们称它们为 values) 是这些值的 display(因此更易于阅读)。
想法是 values 可以是 culture-variant(例如,取决于翻译的语言),而 keys are invariant:无论设置如何,键通常总是相同的。由于这些存储在数据库中,因此不必非常漂亮,因为程序员应该能够理解它们的含义。但是,如果有人也翻译键,那么这可能意味着在更改服务器的语言之后,Django 不能再解释 包含旧翻译项的行。因为'active'
当然不等于'actief'
(荷兰语翻译)。
我个人的建议是在这里使用下划线,因为它也是一个 Python 标识符,因此您可以稍后将其用于 getattr(..)
操作。例如:
getattr(Student, some_student.status.upper())
如果 some_student
具有 status
'not_available'
字符串,则 可用于获取 STUDENT.NOT_AVAILABLE
,但如前所述,可能有两个原因前者和后者的方法。