將用戶轉換為經理后,我需要設定“is_employee = False”和“is_manager = True”。這個程序似乎很簡單,但我無法讓它作業。
模型.py
class User(AbstractUser):
is_admin = models.BooleanField(default=False)
is_employee = models.BooleanField(default=True)
is_manager = models.BooleanField(default=False)
def __str__(self):
return f'{self.first_name} {self.last_name} as {self.username}'
class Manager(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
user_profile = models.OneToOneField(Profile, on_delete=models.CASCADE)
business_unit = models.OneToOneField(BusinessUnit, on_delete=models.SET_NULL, null=True)
previous_business_units = models.CharField(max_length=100, default=None, blank=True, null=True)
manager_description = models.TextField(blank=True, null=True)
manager_created_date = models.DateTimeField(auto_now_add=True, blank=True, null=True)
def __str__(self):
return f'{self.user.first_name} {self.user.last_name}'
視圖.py
@login_required
@admin_required
def manager_create_view(request):
form = ManagerCreationForm()
if request.method == 'POST':
form = ManagerCreationForm(request.POST)
if form.is_valid():
new_manager = form.save(commit=False)
group = Group.objects.get(name='Manager')
new_manager.user.groups.add(group)
new_manager.user.is_employee = False
new_manager.user.is_manager = True
new_manager = form.save()
new_manager = form.cleaned_data.get('user')
messages.success(request, f'{new_manager} is now a Manager!')
return redirect ('list-managers')
messages.error(request, 'Something went wrong, please check the hilighted field(s)')
context = {
'title': 'Create Manager',
'form': form
}
return render(request, 'managers/manager-form.html', context)
我也嘗試使用信號,但沒有運氣。
信號.py
from django.db.models.signals import post_save
from accounts.models import User, Manager
from django.dispatch import receiver
@receiver(post_save, sender=Manager)
def change_user_type(sender, instance, created, **kwargs):
if created:
instance.user.is_manager = True
instance.user.is_employee = False
嘗試自學,所以任何幫助將不勝感激!:)
uj5u.com熱心網友回復:
您需要保存經理的用戶,而不僅僅是經理本身,所以:
@login_required
@admin_required
def manager_create_view(request):
form = ManagerCreationForm()
if request.method == 'POST':
form = ManagerCreationForm(request.POST)
if form.is_valid():
new_manager = form.save() # ?? save the manager object
group = Group.objects.get(name='Manager')
user = new_manager.user
user.groups.add(group)
user.is_employee = False
user.is_manager = True
user.save() # ?? save the user object
messages.success(request, f'{user} is now a Manager!')
return redirect('list-managers')
messages.error(request, 'Something went wrong, please check the hilighted field(s)')
context = {
'title': 'Create Manager',
'form': form
}
return render(request, 'managers/manager-form.html', context)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/411228.html
標籤:
上一篇:從幾行的單列到一條記錄中的多列,但允許在行中為NULL
下一篇:隱藏表單內容,直到單擊按鈕
