У меня есть следующая ситуация. У меня три модели: почта, пользователь и друзья.django есть способ аннотировать вложенный объект?
class User(models.Model):
name = models.CharField(max_length=100)
class Friend(models.Model):
user1 = models.ForeignKey(User,related_name='my_friends1')
user2 = models.ForeignKey(User,related_name='my_friends2')
class Post(models.Model):
subject = models.CharField(max_length=100)
user = models.ForeignKey(User)
Каждый раз, когда я приношу пользователей, я хочу, чтобы довести количество своих друзей:
User.objects.filter(name__startswith='Joe').annotate(fc=Count('my_friends1'))
Это прекрасно работает.
Однако, я хочу сделать эту работу, когда я приношу пользователям вложенные объекты Post. Я использую там select_related к минимизированы DB вызовов, так что я хочу сделать что-то вроде:
Post.objects.filter(subject='sport').select_related('user').annotate(user__fc=Count('user__my_friends1'))
Однако, это создает поле user__fc под должности, а не поле Ь под post.user
. Есть ли способ достичь этой функциональности?