В настоящее время я разрабатываю сайт Django, на котором пользователи могут иметь несколько «учетных записей», чтобы они могли беспрепятственно переключаться между различными общедоступными профилями при взаимодействии с сайтом. То, что я разрабатываю, вероятно, привлечет несколько регистраций на человека (и не будет обескуражен), я просто хотел бы предложить это таким образом, чтобы пользователи могли связывать профили вместе, легко переключаться и должны только войти за один раз.
Два подхода, которые я придумал до сих пор, включают:
Одна пара (
User
модель +SiteProfile
модель) и многоPublicProfile
моделей на человека.AUTH_PROFILE_MODULE
указывает на модельSiteProfile
. Проблема в том, что я не могу легко использовать разрешения для каждого объекта: они будут установлены для объектаUser
, а не для общедоступного профиля, поэтому разрешения на просмотр страницы для «PublicProfileA» также будут применяться, когда пользователь маскируется как "Общественный профильB".Одна модель
Account
и много (модельUser
+ модельUserProfile
) пар на человека.AUTH_PROFILE_MODULE
указывает на модельUserProfile
. Это дало бы дополнительное преимущество в том, что разрешения работают, как предполагалось, и что я могу просто иметь пользовательский бэкэнд, который будет переключать пользователей, аутентифицируя пользователя, если они в настоящее время вошли в систему как другой пользователь, который имеет тот же объектAccount
, что и внешний ключ. . Однако аутентификация будет происходить путем чтения полей в объектеAccount
, что означает, что полеpassword
в каждом объектеUser
будет потрачено впустую.То же, что и выше, но с подклассом
Account
отUser
. Хотя мне настоятельно советовали против этого (по неясным причинам).
Есть ли подводные камни или лучшие подходы к этому? В конечном счете, должен ли я использовать встроенную модель User
как модель «один на человека», которая идентифицирует группу общедоступных профилей (из которых эти профили имеют FK обратно к объекту User
), или использовать ее как сам профиль, ссылаться на один объект Account
для каждого человека?