Форум сайта python.su
Добрый день!
Подскажите, пожалуйста, как правильно добавить новый класс 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())
class UserRole(models.Model): user = models.OneToOneField(NewUser) user_role = [b]???[/b]
Отредактировано bmco@mail.ru (Июнь 25, 2014 11:17:27)
Офлайн
bmco@mail.ruЧитайте те же уже документацию!!!!!!!
иметь одну из двух ролей - Продавец или Покупатель
Офлайн
FishHook
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)
Офлайн
Офлайн
FishHookНу да, все правильно на указанной странице есть 2 примера кода:
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()
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)
Офлайн
bmco@mail.ruТам же ниже есть
И все! Но этого не достаточно для понимания как использовать группы
add: user.has_perm('foo.add_bar') change: user.has_perm('foo.change_bar') delete: user.has_perm('foo.delete_bar')
Офлайн
bmco@mail.ruДа это же просто ManyToMany филд, никакого волшебства, просто он есть уже изкоробки.
И все! Но этого не достаточно для понимания как использовать группы
Офлайн
FishHookи Singularity
Отредактировано bmco@mail.ru (Июнь 25, 2014 17:57:20)
Офлайн
Ок, объясняю. Вам нужно два вида пользователей, которые будут обладать разными правами (если вы хотите использовать систему джанговских прав) и вы хотите иметь возможность в любое время выяснить, что же за пользователь у Вас сейчас послал запрос.
Вы заходите в админку, и видите там Группы. Добавляете две группы: продавцы, Покупатели.
Теперь каждый из ваших пользователей может быть членом одной из этих групп (или обеих сразу).
bmco@mail.ru
Юзер регистрируется, при этом выбирает свою роль - Продавец или Покупатель
group_id = request.GET["group_id"] group = Group.objects.get(id=group_id) myuser.groups.add(group)
Офлайн
bmco@mail.ru
А мне кажется что это было вот так
- Всем привет. Я тут не читал документацию и хочу навелосипедить свой костыль для типового решения которое есть реализованное в батарейках джанго.
- Используйте стандартное решение
- Я сходил по ссылке прочитал первый кусок кода. ЭТО ЧТО ВСЕ ???!!!! А ЕСТЬ НОРМАЛЬНЫЕ ПРИМЕРЫ???!!!
Я понимаю что ТС хотел это https://docs.djangoproject.com/en/dev/ref/models/fields/#choices
но блин надо использовать то что есть в джанге ибо там есть дополнительные фичи.
Отредактировано Singularity (Июнь 25, 2014 19:05:27)
Офлайн