Получить из БД количество друзей для каждого друга
В таблице 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 список пользователей-друзей.