我有一个用户模型和另一个页面模型。现在我想实现类似于 Facebook 的 like。用户可以喜欢任何页面。稍后我必须检索单个用户所有喜欢的列表以及喜欢特定页面的所有用户的列表。
我尝试为 Likes 制作一个单独的模型,并将两个字段制作为 User (OneToOne) 和 Page(OnetoOne)。但是我以后如何获取数据呢?
最佳答案
user = User.objects.get(username="foo")
user_likes = user.likes_set.all()
page = Page.objects.get(id=4)
page_likes = page.likes_set.all()
您可以在 Like 模型的字段定义中更改相关经理的默认名称:
user = models.ForeignKey(User, related_name="likes")
page = models.ForeignKey(Page, related_name="likes")
然后你可以这样称呼他们:
user_likes = user.likes.all()
page_likes = page.likes.all()
附带说明一下,有一些 Django 应用程序可以完成这项工作:
- Django 投票: Like application in django
- Phileo,在 Pinax 项目下:https://github.com/eldarion/phileo
关于用户的 Django 模型,例如,类似页面的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12337989/