Правильный способ определить «оставшееся свободное время» для пользователя Django - PullRequest
1 голос
/ 05 июня 2010

Я реализовал модель UserProfile (как говорят в документации Django 1.2 - это правильный способ сохранения дополнительных данных о пользователе), которая имеет поле «Остаток_вакции_часов».

В нашей нынешней системе, когда пользователь заполняет запрос на отключение, оставшиеся свободные часы следует проверить, чтобы убедиться, что у них достаточно отпуска, или иначе предупредить, что они просят больше, чем имеют.

Конечно, часы отпуска ежегодно пополняются, поэтому было бы целесообразно, чтобы система проверила, начисляются ли пользователю дополнительные каникулы за даты, которые они запрашивают.

Достаточно просто создать метод get_remaining_vacation_hours(), потому что другие вычисления или бизнес-логика, которые могут понадобиться в будущем, могут быть добавлены или вызваны из этого метода.

У меня вопрос, звучит ли правильно, что метод get_remaining_vacation_hours() будет добавлен в модель UserProfile?

Кажется, это имеет смысл, но я хотел убедиться в сообществе, что я не пропускаю лучшую практику для такого рода вещей. Любые идеи или предложения приветствуются.

Ответы [ 2 ]

2 голосов
/ 05 июня 2010

Во-первых, я бы предложил решение создать другой метод (как вы уже предлагали), но в другом классе и передать пользовательский экземпляр в качестве параметра. Таким образом, ваш пользователь не отличается тем, что может не подходить для всех на этом уровне абстракции. Рассмотрим, например, потенциальных сотрудников, аудиторов, партнеров, подрядчиков или других пользователей.

Если ваша система никогда не будет иметь пользователей как таковых (или, по крайней мере, очень мало), тогда я повторяю ответ lazerscience. По моему опыту, даже опытные программисты с большим опытом проектирования имеют тенденцию варьироваться в зависимости от того, какая информация и поведение должны входить в профиль пользователя. Доверься своей интуиции. Если он «чувствует», что не может быть источником боли или путаницы, тогда сделайте это. См. Также: Джефф Этвуд совет в таких вопросах.

2 голосов
/ 05 июня 2010

Если вы не хотите изменять / наследовать от исходной модели пользователя, я бы сказал, что все в порядке, если метод добавлен в ваш профиль пользователя!

...