Добавить пользователя в группу при регистрации в Django - PullRequest
0 голосов
/ 01 апреля 2020

Новый для Django здесь. Существует три типа пользователей: бронзовый, серебряный и золотой с разными разрешениями. Все пользователи начинают как Бронзовый, когда они регистрируются, а затем двигаются вверх, когда они выполняют определенные условия. Поэтому я попытался настроить модель User с помощью учебника Django. До сих пор я был в состоянии создать пользователей правильно. Однако я хочу добавить этих пользователей в Бронзовую группу, как только они зарегистрируются, и не уверен, куда мне поместить этот код. Вот мой код Это довольно просто. models.py

# models.py
from django.contrib.auth.models import AbstractUser, Group
from django.db import models

class CustomUser(AbstractUser):
    pass
    # add additional fields in here

    def __str__(self):
        return self.username

forms.py

from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser

class CustomUserCreationForm(UserCreationForm):

    class Meta:
        model = CustomUser
        fields = ('username', 'email')

class CustomUserChangeForm(UserChangeForm):

    class Meta:
        model = CustomUser
        fields = ('username', 'email')

views.py

from django.shortcuts import render
from django.urls import reverse_lazy
from django.views.generic.edit import CreateView
from .forms import CustomUserCreationForm

# Create your views here.
class SignUpView(CreateView):
    form_class = CustomUserCreationForm
    success_url = reverse_lazy('login')
    template_name = 'signup.html'

admin.py

from django.contrib import admin

# Register your models here.
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin

from .forms import CustomUserCreationForm, CustomUserChangeForm
from .models import CustomUser

class CustomUserAdmin(UserAdmin):
    add_form = CustomUserCreationForm
    form = CustomUserChangeForm
    model = CustomUser
    list_display = ['email', 'username',]

admin.site.register(CustomUser, CustomUserAdmin)

Я могу просто вручную добавить пользователя в группу на django оболочке.

>>>currUser.groups.add(Group.objects.get(name='Bronze'))

Откуда этот код go, чтобы эта команда выполнялась во время регистрации?

Любая помощь приветствуется.

Спасибо

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

@ Тени ... Это сработало. Просто для полноты, вот новый views.py

from django.shortcuts import render, redirect
from django.urls import reverse_lazy
from django.views.generic.edit import CreateView
from django.contrib.auth.models import Group
from .forms import CustomUserCreationForm

# Create your views here.
class SignUpView(CreateView):
    form_class = CustomUserCreationForm
    success_url = reverse_lazy('login')
    template_name = 'signup.html'

    def post(self, request, *args, **kwargs):
        pass
        form = CustomUserCreationForm(request.POST)
        if form.is_valid():
            user = form.save(commit=False)

            user.save()

            user_group = Group.objects.get(name='Bronze')

            user.groups.add(user_group)

            return redirect('login')
        else:
            return render(request, self.template_name, {'form' : form })
0 голосов
/ 01 апреля 2020

def регистрация (запрос):

if request.method == 'POST':
    form = RegistrationForm(request.POST)

    if form.is_valid():
        user = form.save(commit=False)

        user.save()

        user_group = Group.objects.get(name='Mygroup') 

        user.groups.add(user_group)

        #log the user in
        login(request, user)

        return redirect('/summury')

else:

    form = RegistrationForm()

return render(request, 'account/pages/register.html', {'form':form})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...