О задаче:
Есть набор планов, один из которых пользователь выбирает сам. План может быть бесплатным.
В зависимости от плана на пользователя накладываются определенные ограничения. Ограничения эти связаны с количеством создаваемых объектов конкретной модели, пусть это будет модель, называющаяся Post.
Например, нам нужно ограничить количество объектов Post, создаваемых пользователем в день. Добавлю еще то, что возможность редактировать ограничения динамически - крайне необходима.
Вот как я представляю себе решение:
В отдельном приложении есть модель UserPlan, в которой указано название плана, будь то free или premium и перечислены ограничения, накладываемые на пользователя с этим планом касательно модели Post.
В этой апликухе отсутствуют вьюшки, вся логика ограничений расположена в __init__(или другом файле).
В модели юзера конечно же внешним ключом связь с UserPlan.
Из сервисов приложения, отвечающего за работу с моделью Post(вьюшки создания и т.д) подтягиваются функции из приложения с логикой ограничений.
Пример:
def check_can_user_create_post_now(user):
if Post.objects.filter(created_at=today).count() == user.plan.posts_number_per_day:
return False
Возможно, что мое решение является правильным, но я все-таки хотел бы лучшим образом реализовать такую систему.