Mam następującą sytuację. Mam trzy modele, Post, User i Friends.django jest sposób na adnotację zagnieżdżonego obiektu?
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)
Za każdym razem przynieść użytkownikom, chcę przynieść liczbę swoich przyjaciół:
User.objects.filter(name__startswith='Joe').annotate(fc=Count('my_friends1'))
to działa prawidłowo.
Jednak chcę, aby to działało, gdy wprowadzę użytkowników jako zagnieżdżone obiekty Post. Używam tam select_related aby zminimalizować DB wymaga, więc chcę zrobić coś takiego:
Post.objects.filter(subject='sport').select_related('user').annotate(user__fc=Count('user__my_friends1'))
Jednak to stwarza user__fc polu pod postu, a nie pole fc pod post.user
. Czy istnieje sposób na osiągnięcie tej funkcji?