Соглашение об именовании моделей Django - PullRequest
18 голосов
/ 22 декабря 2008

Какое предпочтительное соглашение об именах для классов моделей Django?

Ответы [ 3 ]

32 голосов
/ 22 декабря 2008

Модели Django - это просто классы Python, поэтому применяются правила именования Python, подробно описанные в PEP-8 .

Например:

  1. лицо
  2. Категория
  3. ZipCode

Если Django не удается правильно преобразовать имя класса во время создания соответствующей таблицы, вы можете легко переопределить множественное число, установив пользовательское поле verbose_name_plural во внутреннем классе META. Например:

class Story(models.Model):
    ...

    class Meta:
        verbose_name_plural = "stories"
3 голосов
/ 22 декабря 2008

Насколько я знаю, идея заключается в том, что имя класса должно быть единичным и должно использовать SentenceCase без пробелов. Таким образом, у вас были бы такие имена, как:

Person
TelephoneNumber

Тогда администратор Django знает, как их плюрализировать. Не очень хорошо работает с именами вроде:

Category

, который превращается во множественное число как категории, но мы идем ...

Кроме того, просто дайте ему имя, которое что-то значит для вас, и кратко суммирует, что должен представлять класс.

Ben

0 голосов
/ 25 марта 2019

Кроме того, когда вам нужны связанные объекты для модели из более чем одного слова, вы можете использовать атрибут _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
...