以下是大学及其评级的数据库。以下是我的想法
因为我特别关注评级。我想通过使用管理器或某种模型方法评估批次,我可以计算总部门或大学评级。
注意:单个班级的不同用户可能会有很多评分。所以,我猜全部或平均评分应该通过方法完成!
这就是我到目前为止的方式
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年可能有很多部门),每个部门都可以在很多学院
< / LI>那么,我应该使用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)
这会是对的吗?如果不是
,应该怎么看?由于
答案 0 :(得分:0)
这就是:
from django.contrib.auth.models import User#First import user
lass Rating(models.Model):
..
..
user = models.ForeignKey(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)
当您建立多对多关系时,Django会自动创建一个桥实体。