#django
Вопрос:
Я внедряю модуль друга в свое приложение, и в нем есть ошибки в части запроса друга. Я хочу, чтобы, когда кто-то вводит имя пользователя в форму и нажимает «Отправить», он размещал имя пользователя на той же странице. Затем мое приложение выполняет быстрый поиск в таблице пользователей, и если оно находит имя пользователя, оно добавляет человека, отправившего запрос, в поле manytomany получателя запроса.
Но когда я попробовал это сделать, на самом деле ему удалось добавить запрос, но по какой-то причине он также добавил запрос на добавление в друзья к запрашивающим m2m, в котором говорилось, что он от запрашивающего.
Мое мнение о друге, запрашивающем:
def friends(request):
friendreqs = request.user.friendreq.all()
friends = request.user.friends.all()
if request.method == "POST":
try:
requestee = User.objects.get(username=request.POST["username"])
requester = request.user
requestee.friendreq.add(requester)
return render(request, "alumnas/friends.html", {
'requests': friendreqs,
'friends': friends
})
except ObjectDoesNotExist:
return render(request, "alumnas/friends.html", {
'message': "User not found :(",
'requests': friendreqs,
'friends': friends
})
else:
return render(request, "alumnas/friends.html", {
'requests': friendreqs,
'friends': friends
})
html:
{% extends "alumnas/layout.html" %}
{% block body %}
<div class="contain">
<h1>Friends</h1>
<div class="findfr">
<p>Know anyone already? Find out if they're here and connect!</p>
<form action="{% url 'friends' %}" method="POST">
{% csrf_token %}
<input type="text" class="form-control" placeholder="First name of person..." name="username" ><input type="submit" value="Send!" class="btn btn-primary">
</form>
</div>
<hr>
<div class="friends">
<h3>Friends</h3>
</div>
<hr>
<div class="requests">
<h3>Friend Requests</h1>
<ul>
{% for req in requests %}
<li>
<div class="friendname p-2 border border-primary">
<div class="name pt-2 pl-1">
{{ req.username }}
</div>
<div class="acc">
<a href="{% url 'accept' req.id %}" class="">Accept</button>
</div>
<div class="ig ml-1">
<a href="{% url 'ignore' req.id %}" class="">Ignore</button>
</div>
</div>
</div>
</li>
{% endfor %}
</ul>
</div>
{% if message %}
<div class="notif1 d-flex" id="notif">
<div class="message">
<p>{{ message }}</p>
</div>
<div>
<button id="closenote"><i class="fas fa-times"></i></button>
</div>
</div>
{% endif %}
</div>
{% endblock %}
and the models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class User(AbstractUser):
propic = models.TextField(blank=True)
fullname = models.TextField(blank=True)
friendreq = models.ManyToManyField("self", related_name='requests', blank=True)
friends = models.ManyToManyField("self", related_name="friends", blank=True)
chatrooms = models.ManyToManyField("Chatroom", related_name="users", blank=True)
area = models.TextField(blank=True, max_length=255)
school = models.TextField(blank=True, max_length=255)
class Chatroom(models.Model):
chatcode = models.TextField()
Как я могу убедиться, что он добавляет запрос только к получателю запроса, а не к отправителю запроса? Заранее спасибо!