[Python] How to display a friend request button on each post?

Discussão em 'Python' iniciado por Stack, Junho 24, 2025.

  1. Stack

    Stack Membro Participativo

    I'm trying to make each post from all users have a friend request button for each specific user who uploaded post on homepage. This code below is what I have tried but friend request button is not displayed on each post. I have also tried using a boolean field but still same problem.

    What could I have been doing wrong?

    class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,blank=True,null=True)
    friends = models.ManyToManyField('Profile', related_name="my_friends",blank=True)

    class Post(models.Model):
    poster_profile = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, blank=True,null=True)
    caption = models.TextField(blank=True, null=True)

    class FriendRequest(models.Model):
    from_user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, related_name='from_user')
    to_user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, related_name='to_user')


    def ForYouView(request):
    page_title = "For You"

    poster_profile = Post.objects.all()

    p = Profile.objects.exclude(
    Q(user=request.user)).order_by('-id')

    all_profile_users = []
    button_status_list = []

    for user_obj in p:
    u = user_obj.user
    all_profile_users.append(u)
    friends = Profile.objects.filter(user=request.user, friends__id=user_obj.id).exists()

    button_status = 'none'
    if not friends:
    button_status = 'not_friend'

    if len(FriendRequest.objects.filter(
    from_user=request.user).filter(to_user=u)) == 1:
    button_status = 'cancel_request_sent'

    if len(FriendRequest.objects.filter(
    from_user=u).filter(to_user=request.user)) == 1:
    button_status = 'follow_back_request'

    button_status_list.append(button_status)

    context = {
    'page_title': page_title,
    'poster_profile': poster_profile,
    'profile_and_button_status': zip(p,button_status_list),
    'u': all_profile_users,
    }
    return render(request, 'foryou.html', context)


    {% if poster_profile %}
    {% for user in poster_profile %}
    <div>{{ user.poster_profile }}</div>

    {% if not user == request.user %}
    {% for user in profile_and_button_status %}

    {% if user.1 == 'not_friend' %}
    <a href="" class="friend-request">
    <button type="button" class="btn">
    Follow
    </button>
    </a>
    {% elif user.1 == 'cancel_request_sent' %}
    <a href="" class="friend-request">
    <button type="button" class="btn">
    Cancel
    </button>
    </a>
    {% elif user.1 == 'follow_back_request' %}
    <a href="" class="friend-request">
    <button type="button" class="btn">
    Follow back
    </button>
    </a>

    {% else %}
    <a href="" class="friend-request">
    <button type="button" class="btn">
    Following
    </button>
    </a>

    {% endif %}
    {% endfor %}
    {% endif %}

    <div>{{ user.caption }}</div>
    {% endfor %}
    {% endif %}


    I tried using a boolen True or False in the FriendRequest Model but still do not solve the problem

    Continue reading...

Compartilhe esta Página