Форма моего профиля имеет две половины: индивидуальную и N GO (n go часть формы имеет поле изображения). пользователь может переключаться между типами профилей. если пользователь переключается с N GO на индивидуальный, я обновляю поля n go, связанные с NA, в моей функции. Однако мне нужно сбросить поле изображения, связанное с N GO, по умолчанию и удалить изображение.
models.py
class Profile(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
# on_deleting user, profile will also be deleted
image = models.ImageField(default="profilepic.jpg",upload_to="profile_pictures")
profile_type = models.CharField(max_length=20,choices=PROFILE_TYPES, default='individual')
dob = models.DateField(null=True)
bio = models.TextField(null=True)
anonymous = models.BooleanField(default=False)
ngo_name = models.CharField(max_length=200, blank=True)
ngo_address = models.CharField(max_length=200, blank=True)
ngo_phone = models.CharField(max_length=200, blank=True)
ngo_registration_num = models.CharField(max_length=200, blank=True)
ngo_registration_cert = models.ImageField(default="default_ngo.png",upload_to="ngo_documents")
ngo_status = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return f'{self.user.username} Profile'
forms.py
class ProfileForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['image','profile_type','dob','bio','anonymous','profile_type','ngo_name','ngo_address','ngo_phone','ngo_registration_num','ngo_registration_cert','ngo_status']
views.py
@login_required
def profile_edit(request):
if request.method == 'POST':
u_form = UserUpdateForm(request.POST, instance=request.user)
p_form = ProfileForm(request.POST, request.FILES, instance=request.user.profile)
if u_form.is_valid() and p_form.is_valid():
if p_form.cleaned_data.get('profile_type') == 'ngo':
u_form.save()
p_form.save()
messages.success(request, f'your profile has been updated as NGO ')
return redirect('users:profile')
else:
u_form.save()
temp_p_form = p_form.save(commit=False)
temp_p_form.ngo_name = 'NA'
temp_p_form.ngo_address = 'NA'
temp_p_form.ngo_phone = 'NA'
temp_p_form.ngo_registration_num = 'NA'
temp_p_form.ngo_phone = 'NA'
temp_p_form.ngo_status = False
temp_p_form.ngo_registration_cert = NEED TO SET THIS TO DEFAULT IMAGE AGAIN
temp_p_form.save()
messages.success(request, f'your profile has been updated as Individual ')
return redirect('users:profile')
else:
u_form = UserUpdateForm(instance=request.user)
p_form = ProfileForm()
context = {
'u_form' : u_form,
'p_form' : p_form
}
return render(request, 'users/profile_edit.html',context)