Django模型命名规范

38

Django 模型类的首选命名规则是什么?


仅命名以便您知道该模型代表什么 - kender
4个回答

58

Django模型只是Python类,因此遵循PEP-8中详细说明的Python命名惯例。

例如:

  1. Person(人)
  2. Category(类别)
  3. ZipCode(邮政编码)

如果Django在创建对应表时没有正确地将类名变成复数形式,您可以通过在内部META类中设置自定义的 verbose_name_plural 字段来轻松覆盖复数形式。例如:

class Story(models.Model):
    ...

    class Meta:
        verbose_name_plural = "stories"

Django 会为模型名称 Person 创建什么复数名称? - Hafiz
根据文档,我相信变量名应该是verbose_name_plural。https://docs.djangoproject.com/en/dev/topics/db/models/#meta-options - daydreamer
在PEP-8中没有找到任何证据支持这一点。 - techkuz

5
据我所知,类名应该是单数形式,并采用SentenceCase风格,不含空格。因此,您可以使用以下名称:

据我所知,类名应该是单数形式,并采用SentenceCase风格,不含空格。因此,您可以使用以下名称:

Person
TelephoneNumber

然后Django管理工具知道如何将它们变成复数形式。但是对于像这样的名称就不太适用了:

Category

这里有一个问题,就是Category的复数形式常常被误写成Categorys,但是我们可以忽略这个问题...

除此之外,给这个类取一个对你有意义且简洁地概括了这个类所代表意义的名字即可。

Ben


2
请参考ghoseb上面的答案,了解如何正确地将类别(Categories)等复数化。 - Michael Warkentin

2
在大多数编程语言中,人们更喜欢给对象/模型单数名称,因为这些模型也由数据库系统中的表所代表。简约主义始终是一个好选择,以避免未来的一些意义冲突。
举个例子: 最初的回答

0
此外,当您需要一个由多个单词构成的模型的相关对象时,可以使用 _set 属性。例如:
class ProcessRoom(models.Model):
...
    plant = models.ForeignKey("Plant", verbose_name='planta', on_delete=models.CASCADE)

那么,相关的对象将会是:

plant = Plant.object.get(id=1)
process_rooms = plant.processroom_set.all

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接