2013-08-17 4 views
1

Я пишу приложение, где мне нужно зарегистрировать информацию о пользователе, даже если пользователь еще не существует (0) в Django. В основном мне нужно вставить почти все поля, используемые Auth.user (меня не интересует пароль). Я также создал Профиль модель, связанную с OneToOneField к модели Auth.user и мне нужно, чтобы заполнить этот fileds, а также для пользователей, которые еще не существуют.DRY подход для добавления информации о пользователе без использования Auth.user в Django

Если пользователь зарегистрируется на сайте позже (используя Auth.user), я буду искать его по электронной почте, и если я найду его, я буду слить свою вставленную информацию и те, которые он предоставил.

ВОПРОС: Каков наилучший подход к реализации пользователя настойчивость, не повторяя себя в создании модели очень похожи друг на друга?

+1

Я бы сохранил это очень просто и использовал флаг 'is_active' и пустоту поля пароля (вместе), чтобы выяснить, создал ли пользователь учетную запись или нет. Во время регистрации, если профиль существует, просто попросите его подтвердить письмо и установить пароль. Вы должны быть установлены. – karthikr

+0

У меня есть система продавца-продавца, в которой разные продавцы могут обращаться к разным клиентам. Если _Seller1_ регистрирует _customer1_ и устанавливает 'is_active' как' false', то если _Seller2_ хотел бы вставить свою собственную информацию о _customer1_, возник бы конфликт. Кроме того, что, если _customer1_ удаляет свою учетную запись? Для обеспечения конфиденциальности система должна удалить всю предоставленную им информацию (но не те, которые продавцы предоставили о клиентах) – Leonardo

+0

Ok. Обрабатывайте информацию, создавая уровень абстракции (UserProfile) и расширяя ее, чтобы удовлетворить ваши потребности – karthikr

ответ

0

Я бы рекомендовал использовать фиктивное значение в полях date_joined или last_login для модели User, если вы хотите реализовать решение без добавления нового поля только для того, чтобы служить в качестве индикатора.

Потенциальная проблема с использованием значка is_active заключается в том, что вы можете использовать этот флаг для «черного списка» или эффективно удалить учетную запись, не удаляя фактически свою запись из своей базы данных (чтобы предотвратить повторное создание учетной записи с помощью те же учетные данные и т. д.). Если вы начнете полагаться на то, что пароль не установлен, то, если наступает когда-нибудь, когда вы хотите внедрить альтернативные методы входа (OAuth), тогда в этих случаях не будет установлено поле пароля (огромный конфликт).

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

  • Нет связанных вопросов^_^