Edited Title : Limit multiple "Many to One" fields into "One to One" association : Django
我们有图书,用户和评级作为Django模型。你知道吗
class Book(models.Model):
isbn = models.CharField(max_length=32)
title = models.CharField(max_length=256)
def __str__(self):
return self.title
class BookRating(models.Model):
book = models.ForeignKey(Book, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
rating = models.SmallIntegerField(choices=[(i, i) for i in range(1, 6)])
def __str__(self):
return self.rating
如何确保每个用户在每本书上都有一个评分?你知道吗
就这么做吧
您的模型确实实现了多对多关系,但是您无法完全访问django多对多功能。我建议你这样做:
当您这样做时,您的BookRating可以保持不变,但是对Book模型的微小更改使您可以完全访问这里描述的api:https://docs.djangoproject.com/en/1.10/topics/db/examples/many_to_many/
有趣的是,如上所述修改Book模型不会对数据库中的表结构进行任何更改。它们保持不变。这只是一个解锁api的问题。你知道吗
相关问题 更多 >
编程相关推荐