I am trying to retrieve information regarding a user's profile to display on a page. The issue is it retrieves the relevant information from every user instead of just the one logged in.
I have tried requesting for only the user logged in at the time, but I unfortunately could not get it to work.
HTML
<div>
<span class="bold">
<p>Bio:</p>
</span>
<p>
{{ profile.bio }}
</p>
</div>
models.py
class Profile(models.Model):
user = models.OneToOneField(User, default=None, null=True, on_delete=models.CASCADE)
bio = models.CharField(max_length=2000)
instrument = models.CharField(max_length=255, choices=instrument_list, blank=True)
level = models.CharField(max_length=255, choices=level_list, blank=True)
preferred_language = models.CharField(max_length=255, choices=language_list, blank=True)
time_zone = models.CharField(max_length=255, choices=time_list, blank=True)
def __str__(self):
return self.profile
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
class ProfileForm(ModelForm):
class Meta:
model = Profile
exclude = ('user',)
views.py
@login_required
def profile_page_edit(request):
if request.method == 'POST':
form = ProfileForm(request.POST)
if form.is_valid():
profile = form.save(commit=False)
profile.user = request.user
profile.save()
return redirect('/student/profile-page')
else:
form = ProfileForm()
form = ProfileForm()
context = {'form': form }
return render(request, 'student/profile_page_edit.html', context)
@login_required
def profile_page(request):
form = ProfileForm
profile = request.user.profile
args = {'form' : form, 'profile' : profile}
return render(request, 'student/profile_page.html', args)
I am trying to get the profile_page view to display the relevant model information for only one user (the one currently logged in).