如何解决如何计算外键项,尤其是使用 Django 的用户模型创建的“作者”?
需要帮助更好地掌握 1) 访问和计算 Django 中的外键项和 2) 计算通过 Django 的内置用户创建的外键项:
#1)
answer here 建议使用 Django 的 annotate
函数:例如。 questions = Question.objects.annotate(number_of_answers=Count('answer'))
(问题是要回答的外键项)。但是我不清楚这条线属于哪里(在示例的情况下,问题或答案),或者 app-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.comments.all()
可以获得与帖子相关的所有评论。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。