【问题标题】:Django model naming conventionDjango 模型命名约定
【发布时间】:2010-09-28 00:07:52
【问题描述】:

Django 模型类的首选命名约定是什么?

【问题讨论】:

  • 只需命名,以便您了解模型的含义

标签: django django-models naming-conventions


【解决方案1】:

Django 模型只是 Python 类,因此适用于 PEP-8 中详述的 Python 命名约定。

例如:

  1. 类别
  2. 邮政编码

如果 Django 在创建相应的表时未能正确地复数,您可以通过在内部 META 类中设置自定义 verbose_name_plural 字段轻松覆盖复数。例如:

class Story(models.Model):
    ...

    class Meta:
        verbose_name_plural = "stories"

【讨论】:

【解决方案2】:

据我所知,这个想法是类名应该是单数的,并且应该使用不带空格的 SentenceCase。所以你会有这样的名字:

Person
TelephoneNumber

然后 Django 管理工具知道如何将它们复数。不太适合以下名称:

Category

它被复数为类别,但我们去...

除此之外,只需给它起一个对您有意义的名称,并简明扼要地概括该类的含义。

【讨论】:

  • 请参阅上面 ghoseb 的回答,了解如何正确复数类别之类的内容。
【解决方案3】:

在大多数编程语言中,人们更喜欢为对象/模型指定一个单数名称,因为这些模型也由数据库系统中的表表示。极简主义每次都是不错的选择,避免以后出现一些意义冲突。

举例说明; https://stackoverflow.com/a/5841297/2643226

【讨论】:

    【解决方案4】:

    另外,当你需要一个以上单词的Model相关对象时,可以使用_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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多