2015-04-12 3 views
0

Я знаю, как создавать пользовательские модели, мой вопрос касается стиля и лучших практик.Пользовательская модель пользователя в Django?

Каковы последствия пользовательской модели пользователя в Django? Действительно ли лучше использовать вспомогательную модель «один-к-одному»?

И, например, если у меня есть UserProfile модели, является один-к-одному к User, я должен создать friends отношения (который будет действовать только для моего приложения) между UserProfile или между User?

Также все сторонние пакеты полагаются на get_user_model(), так что, если я не пользуюсь пользовательской моделью, все ваши отношения должны идти до User, правильно? Но я до сих пор не могу добавить методы к User, поэтому, если User имеет отношение friends, и я хочу добавить метод recent_friends, я должен добавить этот метод к . Это выглядит немного непоследовательно для меня.

Я был бы рад, если бы кто-то, кто испытал в Django, мог дать четкое представление.

ответ

1

Также все сторонние пакеты полагаются на get_user_model(), поэтому, если я не использую пользовательскую модель пользователя, все ваши отношения должны идти к пользователю, правильно? Но я до сих пор не могу добавлять методы для пользователя, поэтому, если у пользователя есть отношения друзей, и я хочу добавить метод recent_friends, я должен добавить этот метод в UserProfile.

В прошлом я спустил маршрут «один к одному», и в конце концов мне не нравился дизайн моего приложения, мне кажется, что он заставляет вас подальше от SOLID. Поэтому, если бы я был вами, я предпочел бы подкласс AbstractBaseUser или AbstractUser.

С AbstractBaseUser вам предоставляется только основная реализация User, а затем вы можете расширить модель в соответствии с вашими требованиями. В зависимости от того, какие пакеты сторонних производителей вы используете, вам может потребоваться больше, чем просто реализация ядра: если это так, просто увеличьте AbstractUser, что позволит вам расширить полную реализацию User.

1

Я бы определенно рекомендовал использовать пользовательскую модель - даже если вы используете индивидуальный профиль с профилем. Непростая миграция в пользовательскую модель пользователя, если вы привержены модели пользователя по умолчанию, и почти всегда есть точка, в которую вы хотите добавить, по крайней мере, некоторую пользовательскую логику для модели пользователя.

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

Смежные вопросы