Класс в поле
Анти-паттерн
Нет смысла в названиях полей дублировать название модели - в прикладном коде название поля и так всегда следует за названием модели. Всегда высушивайте названия полей. Исключением может стать вариант, когда в объекте присутствует несколько типов номеров, и название класса, добавленное к названию поля помогает в них не запутаться.
Пример 1¶
Сравните масло-масляный вариант и высушенный. Очевидно, что короткий вариант лучше, с какой стороны ни посмотри.
Плохо:
owner.owner_phonenumber
Хорошо:
owner.phonenumber
Пример 2¶
Плохо:
from django.db import models
from phonenumber_field.modelfields import PhoneNumberField
class Owner(models.Model):
full_name = models.CharField(
verbose_name='ФИО владельца',
max_length=200,
)
owner_phonenumber = PhoneNumberField(
verbose_name='Номер владельца',
region='RU',
)
owner_flats = models.ManyToManyField(
'Flat',
verbose_name='Квартиры в собственности',
related_name='owners',
)
def __str__(self):
return self.full_name
Хорошо:
from django.db import models
from phonenumber_field.modelfields import PhoneNumberField
class Owner(models.Model):
full_name = models.CharField(
verbose_name='ФИО владельца',
max_length=200,
)
phonenumber = PhoneNumberField(
verbose_name='Номер владельца',
region='RU',
)
flats = models.ManyToManyField(
'Flat',
verbose_name='Квартиры в собственности',
related_name='owners',
)
def __str__(self):
return self.full_name