我有两个主要的模型,漫画和发行,一个漫画有多个问题。我试图弄清楚如何获得特定用户已经阅读过的问题。我正在考虑创建另一个名为ReadIssue的模型来存储读取状态,但无法根据用户的不同来解决每个问题的read属性。
发布于 2016-06-01 20:34:31
根据我在你的课文中所理解的,这可能是建立基本模型的一种方法。
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')现在您可以执行这样的查询
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是个好主意,因为这是您最有可能在该表中进行所有查找的方式。
通过将这些小助手方法添加到模型中,您可以使整个过程非常有表现力,并且易于理解。
https://stackoverflow.com/questions/37577610
复制相似问题