Я пытаюсь сохранить текущего пользователя в forms.py с помощью метода save (). Можете ли вы помочь мне решить эту проблему
вот мои модели.py models.py
class Warden(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
firstName = models.CharField(max_length=30,null=True)
lastName = models.CharField(max_length=30,null=True)
email = models.EmailField(null=True)
phone_number = models.CharField(max_length=12 ,null=True)
hostel_name=models.CharField(max_length=20,null=True)
profile_image = models.ImageField(default="logo-2.png",upload_to='users/', null=True, blank=True )
def __str__(self):
return self.email
class HostelStaff(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
firstName = models.CharField(max_length=30,null=True)
lastName = models.CharField(max_length=30,null=True)
email = models.EmailField(null=True)
phone_number = models.CharField(max_length=12 ,null=True)
hostel_name=models.CharField(max_length=100)
#this is forignkey in which i want to save logged user
warden = models.ForeignKey(Warden, on_delete=models.CASCADE)
profile_image = models.ImageField(default="logo-2.png",upload_to='users/', null=True, blank=True )
def __str__(self):
return self.firstName + ' ' + self.lastName
это мой файл forms.py, куда я перехожу, сохраняю метод forms.py
class StaffSignUpForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = User
fields = ('username',)
def save(self):
user = super().save(commit=False)
user.is_hostelstaff = True
user.save()
return user
def __init__(self, *args, **kwargs):
super(StaffSignUpForm, self).__init__(*args, **kwargs)
self.fields['username'].widget.attrs['placeholder'] = ' username'
self.fields['password1'].widget.attrs['placeholder'] = ' password'
self.fields['password2'].widget.attrs['placeholder'] = ' confirm password'
self.helper = FormHelper()
self.helper.form_show_labels = False
for fieldname in ['username','password1', 'password2']:
self.fields[fieldname].help_text = None
class StaffSignUpTwo(forms.ModelForm):
class Meta:
model = HostelStaff
fields = ('firstName', 'lastName','email', 'phone_number', 'hostel_name',)
def __init__(self, user, *args, **kwargs):
super(StaffSignUpTwo, self).__init__(*args, **kwargs)
self.fields['firstName'].widget.attrs['placeholder'] = ' first name'
self.fields['lastName'].widget.attrs['placeholder'] = ' last name'
self.fields['hostel_name'].widget.attrs['placeholder'] = ' hostel name'
self.fields['email'].widget.attrs['placeholder'] = ' email'
self.fields['phone_number'].widget.attrs['placeholder'] = ' phone '
self.helper = FormHelper()
self.helper.form_show_labels = False
@transaction.atomic
def save(self, user):
self.fields['user'] = user
firstName = self.cleaned_data['firstName']
lastName = self.cleaned_data['lastName']
email = self.cleaned_data['email']
phone_number = self.cleaned_data['phone_number']
hostel_name = self.cleaned_data['hostel_name']
hostelstaff = HostelStaff.objects.create(user=user, email=email,firstName=firstName,lastName=lastName,
phone_number=phone_number,hostel_name=hostel_name)
#here is save method
def save(self,pk,commit=True):
obj = super().save(commit=False)
#i think error in this line
obj.warden=Warden.objects.get(user=self.user)
obj.save()
return obj
views.py
def StaffSignUpView(request):
if request.method == 'POST':
main_form = StaffSignUpForm(request.POST)
secondary_form = StaffSignUpTwo(request.user,request.POST)
if main_form.is_valid() and secondary_form.is_valid():
user = main_form.save()
secondary_form.save(request.user)
return redirect('warden_view:warden-home')
else:
main_form = StaffSignUpForm()
secondary_form = StaffSignUpTwo(request.user)
return render(request, 'warden_view/create_staff.html', {
'main_form': main_form,
'secondary_form': secondary_form
})
ошибка scrrenshot
метод save () в forms.py не может сохранить внешний ключ в Django метод save () в forms.py не может сохранить внешний ключ в Django save () в методе forms.py не может сохранить внешний ключ в Метод Djangosave () в forms.py не может сохранить внешний ключ в методе Djangosave () в forms.py, не может сохранить внешний ключ в методе Djangosave () в forms.py, не может сохранить внешний ключ в методе Djangosave () в forms.py невозможно сохранить внешний ключ в методе Djangosave () в forms.py не удается сохранить внешний ключ в методе Djangosave () в forms.py не удается сохранить внешний ключ в Django