Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 25, 2014 11:16:15

bmco@mail.ru
Зарегистрирован: 2014-03-11
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Новая модель User + регистрация

Добрый день!

Подскажите, пожалуйста, как правильно добавить новый класс 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 и соответствующей записью при регистрации

Отредактировано bmco@mail.ru (Июнь 25, 2014 11:17:27)

Офлайн

#2 Июнь 25, 2014 16:19:43

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Новая модель User + регистрация

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



Офлайн

#3 Июнь 25, 2014 17:14:55

bmco@mail.ru
Зарегистрирован: 2014-03-11
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Новая модель User + регистрация

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()

и все!?

Отредактировано bmco@mail.ru (Июнь 25, 2014 17:26:23)

Офлайн

#4 Июнь 25, 2014 17:25:45

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Новая модель User + регистрация

Офлайн

#5 Июнь 25, 2014 17:30:50

bmco@mail.ru
Зарегистрирован: 2014-03-11
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Новая модель User + регистрация

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)

И все! Но этого не достаточно для понимания как использовать группы

Офлайн

#6 Июнь 25, 2014 17:33:29

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Новая модель User + регистрация

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

Офлайн

#7 Июнь 25, 2014 17:37:50

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Новая модель User + регистрация

bmco@mail.ru
И все! Но этого не достаточно для понимания как использовать группы
Да это же просто ManyToMany филд, никакого волшебства, просто он есть уже изкоробки.



Офлайн

#8 Июнь 25, 2014 17:50:38

bmco@mail.ru
Зарегистрирован: 2014-03-11
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Новая модель User + регистрация

FishHook
и Singularity

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

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

Вы понимаете, что у нас просто разные уровни восприятия/понимания, иначе бы я на форум не обращался.

Отредактировано bmco@mail.ru (Июнь 25, 2014 17:57:20)

Офлайн

#9 Июнь 25, 2014 18:00:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Новая модель User + регистрация

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

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

group_id = request.GET["group_id"]
group = Group.objects.get(id=group_id)
myuser.groups.add(group)
Или через форму или как угодно. Теперь пользователь в группе.
Всё!



Офлайн

#10 Июнь 25, 2014 19:03:31

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Новая модель User + регистрация

bmco@mail.ru
А мне кажется что это было вот так

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

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

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


Я понимаю что ТС хотел это https://docs.djangoproject.com/en/dev/ref/models/fields/#choices
но блин надо использовать то что есть в джанге ибо там есть дополнительные фичи.

Отредактировано Singularity (Июнь 25, 2014 19:05:27)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version