gpt4 book ai didi

python - AttributeError at/accounts/signup/'str' 对象没有属性 'add'

转载 作者:太空宇宙 更新时间:2023-11-04 02:09:13 25 4
gpt4 key购买 nike

我是 Django 的新手,所以我在这方面使用了实际示例 tutorial在使用用户配置文件扩展用户模型时,我在 form.py 上遇到了问题,它在删除此行时给出了该错误;supervisor.su_mobile_number.add(*self.cleaned_data.get('su_mobile_number'))它运行顺利,但没有将 su_mobile_number 的数据插入数据库

view.py

class SupervisorSignUpView(CreateView):
model = User
form_class = SupervisorSignUpForm
template_name = 'registration/signup_form.html'

def get_context_data(self, **kwargs):
kwargs['user_type'] = 'supervisor'
return super().get_context_data(**kwargs)

def form_valid(self, form):
user = form.save()
login(self.request, user)
return redirect('home')

模型.py

class User(AbstractUser):
is_supervisor = models.BooleanField(default=False)
is_student = models.BooleanField(default=False)


class Supervisor(models.Model):
user = models.OneToOneField('User', on_delete=models.CASCADE, primary_key=True, related_name='supervisor')
su_mobile_number = models.CharField(max_length=200)

表单.py

class SupervisorSignUpForm(UserCreationForm):
su_mobile_number = forms.CharField()

class Meta(UserCreationForm.Meta):
model = User

@transaction.atomic
def save(self):
user = super().save(commit=False)
user.is_supervisor = True
user.save()
supervisor = Supervisor.objects.create(user=user)
supervisor.su_mobile_number.add(*self.cleaned_data.get('su_mobile_number'))
return user

最佳答案

使用=运算符赋值,然后调用save()方法

@transaction.atomic
def save(self):
user = super().save(commit=False)
user.is_supervisor = True
user.save()
supervisor = Supervisor.objects.create(user=user)
<b>supervisor.su_mobile_number = self.cleaned_data.get('su_mobile_number')
supervisor.save()</b>
return user

更短的方法是(如@Abdul Niyas P M所述)

@transaction.atomic
def save(self):
user = super().save(commit=False)
user.is_supervisor = True
user.save()
<b>supervisor = Supervisor.objects.create(user=user, su_mobile_number=self.cleaned_data.get('su_mobile_number'))</b>
return user

关于python - AttributeError at/accounts/signup/'str' 对象没有属性 'add',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53985793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com