首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django全局对象单个用户关系

问django全局对象单个用户关系
EN

Stack Overflow用户
提问于 2016-06-01 19:52:24
回答 1查看 58关注 0票数 0

我有两个主要的模型,漫画和发行,一个漫画有多个问题。我试图弄清楚如何获得特定用户已经阅读过的问题。我正在考虑创建另一个名为ReadIssue的模型来存储读取状态,但无法根据用户的不同来解决每个问题的read属性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-01 20:34:31

根据我在你的课文中所理解的,这可能是建立基本模型的一种方法。

代码语言:javascript
复制
class Comic(models.Model):
    name = models.CharField(max_length=100)

class Issue(models.Model):
    comic = models.ForeignKey(Comic, related_name='issues')
    title = models.CharField(max_length=100)

    def was_read_by(self, user):
        return bool(self.users.filter(user=user).count())

class ReadIssue(models.Model):
    user = models.ForeignKey(User, related_name='read')
    issue = models.ForeignKey(Issue, related_name='users')

现在您可以执行这样的查询

代码语言:javascript
复制
user = Users.objects.get(pk=1)
comic = Comic.objects.get(pk=1)

first_issue = comic.issues.all().first()

user_read_it = first_issue.was_read_by(user)

因此,您只需检查组合user-issue是否存在于ReadIssue表中。当然,为这一对添加一个index_together是个好主意,因为这是您最有可能在该表中进行所有查找的方式。

通过将这些小助手方法添加到模型中,您可以使整个过程非常有表现力,并且易于理解。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37577610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档