我有以下情况。我有三个模型,帖子、用户和朋友。
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 来最小化数据库调用,所以我想做类似的事情:
Post.objects.filter(subject='sport').select_related('user').annotate(user__fc=Count('user__my_friends1'))
但是,这会在 post 下创建字段 user__fc,而不是在post.user
. 有没有办法实现这个功能?