在Django中注册时将用户添加到组中

这里是Django的新手。共有三种类型的用户:具有不同权限的青铜,银和金。所有用户在注册时均以铜牌身份开始,然后在满足特定条件时向上移动。因此,我尝试使用Django的教程来自定义User模型。到目前为止,我已经能够正确创建用户。但是,我现在想在这些用户注册后立即将其添加到Bronze组中,并且不确定将代码放在哪里。这是我的代码。它相当简单。 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 shell上的组中。

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

此代码在哪里输入,以便在注册时执行此命令?

感谢您的帮助。

谢谢

rabbitanddog 回答:在Django中注册时将用户添加到组中

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})
,

@Shady ...有效。为了完整起见,这里是新的 views.py

class OrderAssignAdapter(val items : List<DeliveriesItem>,view: View,contexto: Context,bundler : Bundle): RecyclerView.Adapter<OrderAssignAdapter.AssignViewAdapter>() {

private var filterListResult : List<DeliveriesItem> = items
private var vista : View = view
private var bundle : Bundle = bundler
private var context : Context = contexto



class AssignViewAdapter(itemView : View): RecyclerView.ViewHolder(itemView) {

    var textCompany : TextView = itemView.findViewById(R.id.txtcompany)
    var textDirEntrega : TextView = itemView.findViewById(R.id.txtDirentrega)
    var textClaveRastreo : TextView = itemView.findViewById(R.id.txtclaveRastreo)
    var textTipoEntrega : TextView = itemView.findViewById(R.id.txttipoentrega)
    var textMonto : TextView = itemView.findViewById(R.id.txtmonto)
    var textStatus : TextView = itemView.findViewById(R.id.txtstatus)

}

override fun onCreateViewHolder(parent: ViewGroup,p0: Int): AssignViewAdapter {

    val vista : View = LayoutInflater.from(parent.context).inflate(R.layout.item_orden,parent,false)
    val layoutParams = RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT)
    vista.layoutParams=layoutParams
    return AssignViewAdapter(vista)
}

override fun getItemCount(): Int {

    return filterListResult.size
}

override fun onBindViewHolder(holder: AssignViewAdapter,position: Int) {

    /*holder.textCompany.text = filterListResult[position].deliveries?.get(position)?.order?.get(position)?.company?.get(position).toString()
    holder.textDirEntrega.text = filterListResult[position].deliveries?.get(position)?.delivery?.get(position)?.address?.get(position).toString()
    holder.textClaveRastreo.text = filterListResult[position].deliveries?.get(position)?.order?.get(position)?.trackingid?.get(position).toString()
    holder.textTipoEntrega.text = filterListResult[position].deliveries?.get(position)?.order?.get(position)?.deliveryType?.get(position).toString()
    holder.textMonto.text = filterListResult[position].deliveries?.get(position)?.order?.get(position)?.amount.toString()
    holder.textStatus.text = filterListResult[position].deliveries?.get(position)?.order?.get(position)?.currenStatus?.get(position).toString()*/


}
}
本文链接:https://www.f2er.com/2533319.html

大家都在问