Найти - Пользователи
Полная версия: Новая модель User + регистрация
Начало » Django » Новая модель User + регистрация
1 2
bmco@mail.ru
Добрый день!

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

Форма:
class RegistrationForm(forms.Form):
    TYPE_CHOICES = (
        ('f', u'Seller'),
        ('c', u'Buyer'),
    )
    party_type = forms.ChoiceField(choices=TYPE_CHOICES, label=u'User role')
    email = forms.EmailField(label=u'Email', max_length=80)
    password1 = forms.CharField(label=u'Password', widget=forms.PasswordInput())
    password2 = forms.CharField(label=u'Password (Again)', widget=forms.PasswordInput())


models.py:
class UserRole(models.Model):
    user = models.OneToOneField(NewUser)
    user_role = [b]???[/b]


Что необходимо добавить, чтобы работал такой вариант:
1) Юзер регистрируется, при этом выбирает свою роль - Продавец или Покупатель
2) В БД создается таблица с полями user, user_role и соответствующей записью при регистрации

FishHook
bmco@mail.ru
иметь одну из двух ролей - Продавец или Покупатель
Читайте те же уже документацию!!!!!!!
Всё уже есть джанге из коробки, называется groups, по русски группы.
bmco@mail.ru
FishHook

Может быть подскажите или укажите на нормальные примеры использования groups. В документации я не нашел (http://djbook.ru/rel1.6/topics/auth/default.html#user-objects) - просто перечислены методы:

myuser.groups = [group_list]
myuser.groups.add(group, group, ...)
myuser.groups.remove(group, group, ...)
myuser.groups.clear()

и все!?
FishHook
bmco@mail.ru
я не нашел
Да ладно!
http://djbook.ru/rel1.6/topics/auth/default.html#permissions-and-authorization
bmco@mail.ru
FishHook
Ну да, все правильно на указанной странице есть 2 примера кода:

1) набор методов
myuser.groups = [group_list]
myuser.groups.add(group, group, ...)
myuser.groups.remove(group, group, ...)
myuser.groups.clear()
myuser.user_permissions = [permission_list]
myuser.user_permissions.add(permission, permission, ...)
myuser.user_permissions.remove(permission, permission, ...)
myuser.user_permissions.clear()

2) и далее пример по разрешениям

from myapp.models import BlogPost
from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType
content_type = ContentType.objects.get_for_model(BlogPost)
permission = Permission.objects.create(codename='can_publish',
                                       name='Can Publish Posts',
                                       content_type=content_type)

И все! Но этого не достаточно для понимания как использовать группы
Singularity
bmco@mail.ru
И все! Но этого не достаточно для понимания как использовать группы
Там же ниже есть
add: user.has_perm('foo.add_bar')
change: user.has_perm('foo.change_bar')
delete: user.has_perm('foo.delete_bar')
Что еще надо?
FishHook
bmco@mail.ru
И все! Но этого не достаточно для понимания как использовать группы
Да это же просто ManyToMany филд, никакого волшебства, просто он есть уже изкоробки.
bmco@mail.ru
FishHook
и Singularity

Извините, конечно, но я вас так и не понимаю! Какое отношение то, что вы пишите, имеет к сформулированной в теме проблеме, а самое главное как это применить на практике не понятно!

Извините, но мне кажется наш диалог выглядит так:
я вам - Покажите мне как есть спагетти палочками. У меня есть японские палочки!
вы мне - Зачем есть палочками? Существует вилка!
я вам - Допустим, хорошо. Как нужно есть вилкой!
вы мне - Нужно есть вилкой!
я вам - Покажите, как пользоваться вилкой?
вы мне - Ну это же просто вилка, тут все просто! Что еще надо?
я вам - Как, покажите как?
ну и т.д.

Вы понимаете, что у нас просто разные уровни восприятия/понимания, иначе бы я на форум не обращался.
FishHook
Ок, объясняю. Вам нужно два вида пользователей, которые будут обладать разными правами (если вы хотите использовать систему джанговских прав) и вы хотите иметь возможность в любое время выяснить, что же за пользователь у Вас сейчас послал запрос.
Вы заходите в админку, и видите там Группы. Добавляете две группы: продавцы, Покупатели.
Теперь каждый из ваших пользователей может быть членом одной из этих групп (или обеих сразу).

bmco@mail.ru
Юзер регистрируется, при этом выбирает свою роль - Продавец или Покупатель

group_id = request.GET["group_id"]
group = Group.objects.get(id=group_id)
myuser.groups.add(group)
Или через форму или как угодно. Теперь пользователь в группе.
Всё!
Singularity
bmco@mail.ru
А мне кажется что это было вот так

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

- Используйте стандартное решение

- Я сходил по ссылке прочитал первый кусок кода. ЭТО ЧТО ВСЕ ???!!!! А ЕСТЬ НОРМАЛЬНЫЕ ПРИМЕРЫ???!!!


Я понимаю что ТС хотел это https://docs.djangoproject.com/en/dev/ref/models/fields/#choices
но блин надо использовать то что есть в джанге ибо там есть дополнительные фичи.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB