I tried multiple links on stackov. but none worked, I can't get my *bio* 
form to save the data on the db for the user profile :/

I managed to save the first name and last name, but I can't make the bio 
save... This is my code:


*profile.html*



<form method="POST">
{% csrf_token %}
{{ user_BioAndSocialForm.bio |as_crispy_field }}
</p>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Update</button>
</div>
</form>


*views.py*



from django.shortcuts import render, redirect
from django.contrib import messages # to display alert messages when the 
form data is valid
from .forms import UserSignUpForm, UserUpdateForm, ProfileUpdateForm, 
UserProfileForm, BioAndSocialForm
from django.contrib.auth.decorators import login_required
from django.contrib.auth import update_session_auth_hash
from django.http import HttpResponseRedirect
from django.shortcuts import HttpResponse
from django.contrib.auth.forms import PasswordChangeForm

@login_required
def profile(request):
if request.method == 'POST':
user_ProfileForm = UserProfileForm(request.POST, instance=request.user)
user_BioAndSocialForm = BioAndSocialForm(request.POST, instance=
request.user)

if user_ProfileForm.is_valid() and user_BioAndSocialForm.is_valid():
user_ProfileForm.save()
user_BioAndSocialForm.save()
messages.success(request, f'Profile updated!')
return HttpResponseRedirect(request.path_info)
else:
messages.error(request, _('Please correct the error below.'))

else:
user_ProfileForm = UserProfileForm(instance=request.user)
user_BioAndSocialForm = BioAndSocialForm(instance=request.user)

context = {
'user_ProfileForm': user_ProfileForm,
'user_BioAndSocialForm': user_BioAndSocialForm
}

return render(request, 'users/profile.html', context)


*forms.py*


from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from .models import Profile
from crispy_forms.helper import FormHelper

class BioAndSocialForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['bio']

def __init__(self, *args, **kwargs):
super(BioAndSocialForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_show_labels = False


*models.py*


from django.db import models
from django.contrib.auth.models import User
from PIL import Image

# Profle model with data regarding the user
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=500, blank=True)
birth_date = models.DateField(null=True, blank=True)

#Image feature upload
image = models.ImageField(default='default.jpg', upload_to='profile_pics')

# If we don't have this, it's going to say profile object only
def __str__(self):
return f'{self.user.username} Profile' # it's going to print username 
Profile

def save(self, *args, **kwargs):
super().save(*args, **kwargs)

img = Image.open(self.image.path)

if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size)
img.save(self.image.path)



This is what the view looks like:


When I hit update, and it refreshes, the bio info is not there. Could 
someone please help me?


Thank you




-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/85fec521-bc2d-444d-8b81-404389e81138%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to