Получить из БД количество друзей для каждого друга

В таблице Profile есть 4 пользователя. В таблице Friends поля (user_tooo - чтобы получить список моих друзей) (ot_user_friends - для получении информации каждого моего друга). Но я не могу получить количество друзей для каждого моего друга
ПРИМЕР: [саша-1,маша-2,дима-3,вика-4] Я саша-1 у меня в друзьях маша-2 а у маши в др. дима и вика. При запросе мои друзья верни список МАША - у маши -2 друзей и так для каждого кто у меня в друзьях.

Может, я использую неправильную связь между моделями (один ко многим)?

models.py:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    avatar = models.ImageField(default='default.jpg', upload_to='profile_images')
    bio = models.TextField()

# модель друзья
class Friends(models.Model):
    ot_user_friends = models.ForeignKey(Profile,on_delete=models.CASCADE,related_name='ot_user_friends')
    user_tooo = models.ForeignKey(Profile,on_delete=models.CASCADE,related_name='user_tooo')

views.py

def userlist(request):
    user_list = Profile.objects.all()
    return render(request, 'user_list/userlist.html', {'user_list':user_list})
       
# верни мой список друзей
def friendslist(request):
    friends_list = Friends.objects.filter(user_tooo=request.user.id)
    return render(request, 'user_list/friends.html', {'friends_list':friends_list})

шаблон: friends.html

{% for xx in friends_list %}
    <h2>username: {{ xx.ot_user_friends.user.username }} id: {{ xx.ot_user_friends.user.id }}</h2>
    <h3>имя:{{ xx.ot_user_friends.user.first_name }} фамилия: {{ xx.ot_user_friends.user.last_name }}</h3>
    <h3>о себе: {{ xx.ot_user_friends.bio }}</h3>
    <h3>друзей: {{ xx.ot_user_friends.user.first_name }}</h3>   
       {% endfor %}

Я думаю вам нужно использовать связь много ко многим (m2m) для поля ot_user_friends модели Friends.

Так как текущая связь один ко многим, не позволит вам хранить в таблице Friends список пользователей-друзей.

Вернуться на верх