Как сделать несколько типов пользователей при регистрации? - PullRequest
5 голосов
/ 06 июля 2010

Я использую Django 1.2 и хочу иметь два типа пользователей (один для компаний и один для консультантов).Я буду использовать объект в моей модели (что-то вроде логического значения для is_company или is_consultant) или группы Django для их различения - в зависимости от того, что легче для этой проблемы.Я думаю, это не будет большой проблемой, если бы я не был полным нубом;)

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

Спасибо за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 07 июля 2010

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

Чтобы создать подкласс формы и добавить дополнительное поле, вы должны сделать что-то вроде этого:

from registration.forms import RegistrationForm

USER_TYPES = (
   ('consultant', 'Consultant'),
   ('company', 'Company'),
)

class MyRegistrationForm(RegistrationForm):
     user_type = forms.ChoiceField(choices=USER_TYPES)

С этого момента вы должны ловить сигнал и делать с данными формы все, что вам нужно У django-Registration есть отличная документация

Надеюсь, это то, на что ты был похож.

1 голос
/ 15 марта 2011

Вместо просмотра в POST, вы можете передать информацию в строке запроса.Таким образом, одна «кнопка» (которая на самом деле является просто ссылкой) ссылается на /form?type=consultant, а другая - на /form?type=company, и затем вы можете получить ее из GET-информации

...