class Category(PublishedWithNameBaseModel, SluggedBaseModel):
...
Или вообще в такую
class Category(NamedBaseModel, PublishedBaseModel, SluggedBaseModel):
...
Если заморачиваться
В последнем случае плюс: более гибкое управление моделями. Относительно минус: залезаем в принцип APO (Avoid Premature Optimization), но здесь нам оба вариант подходят
В решении Данилы, которое он упоминал в вашем чатике, я видел, что slug он и так повторяющимся пропустил бы, но здесь я бы предложил какой-то из своих вариантов
Кстати, базовые модельки ещё помогут с этим куском, который можно вынести (он повторяется трижды, Карл!):
def __str__(self) -> str:
return self.name[:200]
А вот потом уже переопределять, при необходимости
Но там ещё надо учесть уже человеческую логику за пределами ТЗ, где имена могут совпадать (тот же Item, типа "булочка с корицей"), например, а где не могут (тот же Tag, типа "сладкое"). Там выбираем основный вариант, и его уже при необходимости переопределяем в самих моделях
Прям всё кардинально переформатировать не так уж и обязательно, но это тот самый принцип DRY
AbstractName можно спокойно объединить с AbstractStr (слишком разделять тоже не стоит, т.к. они связаны), это потом не помешает переопределить name при необходимости
Например, в сторону
Или вообще в такую
Если заморачиваться В последнем случае плюс: более гибкое управление моделями. Относительно минус: залезаем в принцип APO (Avoid Premature Optimization), но здесь нам оба вариант подходят В решении Данилы, которое он упоминал в вашем чатике, я видел, что
slug
он и так повторяющимся пропустил бы, но здесь я бы предложил какой-то из своих вариантовКстати, базовые модельки ещё помогут с этим куском, который можно вынести (он повторяется трижды, Карл!):
А вот потом уже переопределять, при необходимости
Но там ещё надо учесть уже человеческую логику за пределами ТЗ, где имена могут совпадать (тот же Item, типа "булочка с корицей"), например, а где не могут (тот же Tag, типа "сладкое"). Там выбираем основный вариант, и его уже при необходимости переопределяем в самих моделях Прям всё кардинально переформатировать не так уж и обязательно, но это тот самый принцип DRY