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

inf*_*oop 2 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)
    ...
Run Code Online (Sandbox Code Playgroud)

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

提前致谢!

Bra*_*don 5

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