【发布时间】:2020-06-15 06:52:12
【问题描述】:
我使用 CreateView 创建新用户,但我想同时更新另一个模型。 (将用户添加到俱乐部)
我的表格:
class SignUpFormInvitation(UserCreationForm):
club = forms.CharField(label="Club")
club_pk = forms.CharField(widget=forms.HiddenInput)
username = forms.CharField(max_length=30, required=True, label="Pseudo")
first_name = forms.CharField(max_length=30, required=True, label="Prénom")
last_name = forms.CharField(max_length=30, required=True, label='Nom')
email = forms.EmailField(max_length=254, label='E-mail')
password1 = forms.CharField(widget=forms.PasswordInput, label="Mot de passe")
password2 = forms.CharField(widget=forms.PasswordInput, label="Mot de passe confirmation")
class Meta:
model = User
fields = [
'club',
'username',
'first_name',
'last_name',
'email',
'password1',
'password2',
]
def __init__(self, *args, **kwargs):
super(SignUpFormInvitation, self).__init__(*args, **kwargs)
self.fields['club'].widget.attrs['readonly'] = True
field club 和 club_pk 已正确添加到表单中。
我的看法:
class SignUpViewInvitation(generic.CreateView):
"""
display the register form for a sportif
"""
form_class = SignUpFormInvitation
success_url = reverse_lazy('user-connexion')
template_name = 'utilisateurs/signup.html'
def get_initial(self):
club = get_object_or_404(Club, token=self.kwargs.get('token'))
return {
'club':club,
'club_pk':club.pk,
}
def form_valid(self, form):
club = Club.objects.get(pk=form.instance.club_pk)
club.clubs_members.add(self.request.user)
return super().form_valid(form)
我尝试使用 form_valid 更新俱乐部模型,但返回此错误:
'User' object has no attribute 'club_pk' 这一行club = Club.objects.get(pk=form.instance.club_pk)
【问题讨论】: