为这个用例设计Django模型的“正确方法”是什么?

时间:2011-07-11 19:09:55

标签: django database-design

对于为这个特定用例设计Django模型的“正确方法”,我有点困惑。

我有名为Book,User,Rating的模型。我正在设计一款让用户评价书籍的应用程序。

评级与用户有多对一的关系,与Book有多对一的关系。

class User(models.Model):
    name = models.CharField(max_length=30)

class Book(models.Model):
    name = models.CharField(max_length=30)

class Rating(models.Model):
    user = models.ForeignKey(User,related_name=ratings)
    book = models.ForeignKey(Book,related_name=ratings)
    ...

通过这种设计,我无法弄清楚如何执行用户只能对每本书评分一次的规则。我也不确定这是否是为这个用例设计模型的正确方法。因此,如果我能在正确的方向上获得一些指示,那么可以帮助我在这个早期阶段避免设计缺陷。

提前致谢!

1 个答案:

答案 0 :(得分:5)

您可以在评分模型中使用unique_together Meta选项:https://docs.djangoproject.com/en/1.3/ref/models/options/#unique-together