如何计算外键项,尤其是用 Django 的用户模型创建的 'author'?

How does one count a foreign key item, esp 'author' created with Django's User model?

需要帮助更好地掌握 1) 在 Django 中访问和计算外键项以及 2) 计算通过 Django 的内置用户创建的外键项:

#1) 建议使用 Django 的 annotate 函数:例如。 questions = Question.objects.annotate(number_of_answers=Count('answer'))(问题是要回答的外键项)。但是我不清楚这条线属于哪里(在示例、问题或答案的情况下),或者应用程序的哪一部分-models.py 或 views.py。我在 models.py 和 views.py

中都进行了测试

这是我的模型(这里只有基本的行):

class Post(models.Model):
            post = models.TextField(max_length=1000)
            author = models.ForeignKey(User, related_name="author", on_delete=models.CASCADE)

class Comment(models.Model):
    comment = models.TextField(max_length=1000)
    commenter = models.ForeignKey(User, on_delete=models.CASCADE)
    post_connected =  models.ForeignKey(Post, related_name='posts', on_delete=models.CASCADE, default=None, null=True)

#2) 如何计算使用 Django 的内置模型 User 创建的外键项? 我应该先创建一个名为“作者”的模型吗?

我想告诉你一些关于 related_name 的事情: related_name 帮助您访问另一个模型的对象,例如

class Post(models.Model):
    post = models.TextField(max_length=1000)
    author = models.ForeignKey(User, related_name="posts", on_delete=models.CASCADE)

class Comment(models.Model):
    comment = models.TextField(max_length=1000)
    commenter = models.ForeignKey(User, on_delete=models.CASCADE)
    post_connected =  models.ForeignKey(Post, related_name='comments', on_delete=models.CASCADE, default=None, null=True)

modelobject.related_name.all()获取本例中另一个模型的对象userobject.posts.all()你可以得到所有post与用户对象相关的。 并且用 post.comments.all() 可以获得与 post.

相关的所有评论