Я работаю на сайте знакомств с Django, я следовал учебному пособию в Интернете, но в моем коде есть проблема, касающаяся того, как я могу принять запрос друга / выполнить ответ от других пользователей. Например, если Джон отправит запрос на добавление в друзья / подписку Полу, когда я войду в учетную запись Пола и нажму на профиль Джона, я смогу увидеть «принять запрос / подписаться назад» в профиле Джона. Но то, что я закодировал, - это обратное, согласно моему коду, когда Джон отправляет Полу запрос на дружбу / подписку, когда я захожу в учетную запись Пола и нажимаю на профиль Джона, я не вижу «принять запрос / подписаться назад», скорее я см. «принять запрос / следовать назад» в профиле Джона вместо профиля Пола. Как мне связать «принять запрос / следовать назад» с профилем пользователя, которому я отправил другу / выполнить запрос. Пожалуйста, дайте мне знать, что мне не хватает в моем коде.
class Follow(models.Model):
users = models.ManyToManyField(User, blank=True)
follower = models.ForeignKey(User,on_delete=models.CASCADE,related_name='owner',blank=True,null=True)
date = models.DateTimeField(auto_now_add=True, null= True)
@login_required
def profile(request, username):
profile_img = Profile.objects.filter(user__username=username)
follow, created = Follow.objects.get_or_create(follower=request.user) #request.user
follows = follow.users.all()
rec_friend_requests = Follow.objects.filter(users__username=username)
context = {
'profile_img': profile_img,
'follows': follows,
'rec_friend_requests': rec_friend_requests,
}
return render(request,'profile.html', context)
@login_required
def follow(request, operation, pk):
follower = User.objects.get(pk=pk)
if operation == 'add':
Follow.make_follower(request.user, follower)
elif operation == 'remove':
Follow.lose_follower(request.user, follower)
if operation == 'accept':
Follow.is_following(request.user, follower)
return redirect('site:home')
{% for hideeditbtn in profile_img %}
{% for r_request in rec_friend_requests %}
<p><a href="">{{ r_request.follower.username }}</a></p>
<small><a class="btn btn-primary" href="{% url 'site:accept' r_request.id %}">Accept</a></small>
<small><a class="btn btn-warning" href="{% url 'site:ignore' r_request.id %}">Ignore</a></small>
{% endfor %}
<div class="row mt-1" id="profile-followbtn">
{% if not hideeditbtn.user in follows %}
<div class="col-5 px-2">
<a href="{% url 'site:follow' operation='add' pk=hideeditbtn.user.pk %}">
<button type="button" class="btn btn-primary btn-lg btn-block text-capitalize font-weight-bold" style="margin-left:0px;padding:6px;">Follow</button>
</a>
</div>
<div class="col-5 px-2">
<a href="">
<button type="button" class="btn btn-lg btn-block text-capitalize dark-grey-text font-weight-bold" style="margin-left:0px;padding:6px;">Message</button>
</a>
</div>
{% else %}
<div class="col-5 px-2">
<a href="{% url 'site:follow' operation='remove' pk=hideeditbtn.user.pk %}">
<button type="button" class="btn btn-lg btn-block border border-light text-capitalize dark-grey-text font-weight-bold" style="margin-left:0px;padding:6px;">Following</button>
</a>
</div>
<div class="col-5 px-2">
<a href="">
<button type="button" class="btn btn-lg btn-block border border-light text-capitalize dark-grey-text font-weight-bold" style="margin-left:0px;padding:6px;">Message</button>
</a>
</div>
</div>
{% endif %}
{% endfor %}