Django model writing style
Вопреки django coding style
Оформление моделей в Django. Иногда бывает совсем не понять, что и где находится в моделях. Поэтому не зная о существовании Django coding style я придумал свой велосипед, который с точки зрения Django конечно не правильный, но он помогает мне не запутаться, и я поясняю почему именно так:
- все классы начиная с класса Мета (чтобы видеть что за модель по названию)
- все поля базы данных (аттрибуты класса)
- менеджеры (аттрибуты класса)
- переопределение встроенных методов первый метод
__init__
последний метод def__str__
(чтобы видеть что возвращается в строку на выходе в конце) - собственные методы
- статические функции (аккуратно спрятать все функции относящиеся к модели в класс)
У Django другой порядок:
- все поля базы данных (аттрибуты класса)
- менеджеры (аттрибуты класса)
- все классы начиная с класса Мета (чтобы видеть что за модель по названию)
- переопределение встроенных методов первый метод
__str__()
,save()
,get_absolute_url()
, причем__str__()
должен содержать обратную совместимость с python2 - собственные методы
class MyTree(MPTTModel):
class Meta:
verbose_name = 'ветка'
verbose_name_plural = 'дерево'
order = ['title']
permissions = (
('can_modify_tree_order_index', 'Can modify tree order index'),
)
class MPTTMeta:
order_insertion_by = ['title']
uuid = models.UUIDField(default=uuid.uuid4, editable=False)
title = models.CharField('title', max_length=500)
tree_manager = TreeManager()
def __init__(self, *args, **kwargs):
...
super(MyTree, self).__init__(*args, **kwargs)
def save(self, *args, **kwargs):
...
super(MyTree, self).save(*args, **kwargs)
def __str__(self):
return 'Ветка {title}'.format(title=self.title)
def custom_method(self):
...
return self
@staticmethod
def pre_save(sender, instance, **kwargs):
pass
pre_save.connect(MyTree.pre_save, sender=MyTree)
Прочитав django code style решил написать свое мнение, ведь уже много лет подряд пишу модели.
comments powered by Disqus