Django model naming convention

一笑奈何 提交于 2020-11-30 06:26:09

问题


What is the preferred naming convention for Django model classes?


回答1:


Django models are just Python classes, so the Python naming conventions detailed in PEP-8 apply.

For example:

  1. Person
  2. Category
  3. ZipCode

If Django fails to pluralize the class name properly when creating the corresponding table, you can easily override the pluralization by setting a custom verbose_name_plural field in an inner META class. For example:

class Story(models.Model):
    ...

    class Meta:
        verbose_name_plural = "stories"



回答2:


As far as I know, the idea is that the class name should be singular and should use SentenceCase with no spaces. So you'd have names like:

Person
TelephoneNumber

Then the Django admin tool knows how to pluralise them. Doesn't work so nicely for names like:

Category

which gets pluralised as Categorys, but there we go...

Apart from that, just give it a name that means something to you and succinctly sums up what the class is meant to represent.

Ben




回答3:


In most of programming languages, people prefer give a singular names to the objects/models because these models are also represented by tables in your database system. The minimalism is a good choice everytime to avoid some meaning conflicts in the future.

To exemplify; https://stackoverflow.com/a/5841297/2643226




回答4:


In adition, when you need related objects for a Model of more than one word, you can use the _set attribute. Example:

class ProcessRoom(models.Model):
...
    plant = models.ForeignKey("Plant", verbose_name='planta', on_delete=models.CASCADE)

Then, related objects will be:

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


来源:https://stackoverflow.com/questions/385895/django-model-naming-convention

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!