Одним запросом к бд не возращает количество друзей в списке мои друзья
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 %}
Описание:
В таблице Profile есть 4 пользователя || В таблице Friends поля (user_tooo - чтобы получить список моих друзей) (ot_user_friends - для получении информации каждого моего друга). Но я не могу получить количество друзей для каждого моего друга -- ПРИМЕР [саша-1,маша-2,дима-3,вика-4] Я саша-1 у меня в друзьях маша-2 а у маши в др. дима и вика. При запросе мои друзья верни список МАША - у маши -2 друзей и так для каждого кто у меня в друзьях.
МОЖЕТ Я ИСПОЛЬЗУЮ НЕ ПРАВИЛЬНУЮ СВЯЗЬ МЕЖДУ МОДЕЛЯМИ (один ко многим)
Ответы (1 шт):
Я думаю вам нужно использовать связь много ко многим (m2m) для поля ot_user_friends модели Friends.
Так как текущая связь один ко многим, не позволит вам хранить в таблице Friends список пользователей-друзей.