Ok, thanks. I will keep that in mind. So now I have
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
following = models.ManyToManyField(User, related_name='followers')
date_of_birth = models.DateField(blank=True, null=True)
photo = ResizedImageField(
size=[300, 300],
quality=75,
upload_to="account/",
force_format="WEBP",
blank=False,
)
def __str__(self):
return self.user.username
and in views.py
@login_required
def follow_detail(request, username):
current_user = User.objects.get(username=username)
logged_in_user = request.user
user_followers_count = current_user.followers.count()
user_following_count = logged_in_user.profile.following.count()
is_following = logged_in_user.profile.following.filter(id=current_user.id).exists()
follow_button_value = 'unfollow' if is_following else 'follow'
return render(request, 'account/user/detail.html', {
'current_user': current_user,
'user_followers_count': user_followers_count,
'user_following_count': user_following_count,
'follow_button_value': follow_button_value
})
def followers_count(request, username):
if request.method == 'POST':
current_user = User.objects.get(username=username)
logged_in_user = request.user
value = request.POST['value']
if value == 'follow':
logged_in_user.profile.following.add(current_user)
else:
logged_in_user.profile.following.remove(current_user)
return redirect(f'/users/{username}/detail')
The html page and urls are okay as they are then? I already have a path to view the detail.html page
path('users/<username>/', views.user_detail, name='user_detail'),
Do I change that to
path('users/<str:username>/detail', views.follow_detail, name='user_detail'),