以下是大学数据库及其评级。下面是我的想法
- 每个班级(批次,例如:2009 年批次)属于一个部门
- 每个系(例如:药学系)都属于一个学院
因为我特别关心评级。我想对批次进行评分,通过使用经理或某种模型方法,我可以计算部门或学院的总评分。
- 每个班级都有评分
注意:一个班级可能有不同用户的多个评分。所以,我想总评分或平均评分应该通过一种方法来完成!
这就是我到目前为止所做的
class Rating(models.Model):
positive = models.FloatField(default=0)
negative = models.FloatField(default=0)
class College(models.Model):
name = models.CharField(max_length=200)
website = models.URLField()
class Department(models.Model):
name = models.CharField(max_length=200)
college = models.ForeignKey(College)
class Batch(models.Model):
passout_year = models.IntegerField(max_length=4)
department = models.ForeignKey(Department)
rating = models.ForeignKey(Rating)
这个架构有一些问题!
每批只能有一个评分!但是,我正在寻找由许多用户签名的多个评级(虽然用户模型尚未集成)
每个批次属于一个部门,每个部门属于一个学院。但是,我们也可以用另一种方式来考虑关系
每个学院有很多系,每个系有很多批次,而..每个批次有很多系(例如:2009年可能有很多系),每个系可以在很多学院
那么,我应该使用 ManyToManyField 而不是 ForeignKey 吗?
我应该如何架构?
我认为最重要的变化之一是
class Rating(models.Model):
..
..
user = models.ForeignKey(django.contrib.auth.models.User)
class College(models.Model):
..
..
departments = models.ManyToManyField(Department)
class Department(models.Model):
..
college = models.ForeignKey(College)
batches = models.ManyToManyField(Batch)
class Batch(models.Model):
..
department = models.ForeignKey(Department)
rating = models.ManyToMany(Rating)
这会是对的吗?如果不是的话应该怎么看
谢谢