0

以下是大学的数据库及其评级。下面的是我怎么想何时使用ManyToOne和ManyToMany关系

  1. 每个类(批号,例如:2009年批)属于一处
  2. 每个部门(例如:药剂科)属于学院

由于我特别关注评级。我认为通过使用经理或某种模型方法评估批次,我可以计算总部或大学评级。

  1. 每个类都有等级

注:可能有很多等级由不同的用户提供一个单一的类。所以,我想总体评分或平均评分应该通过一种方法来完成!

这是我至今也

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) 

最重要的变化是这将是正确的?它应该如何看,如果如果没有

感谢

回答

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。

+0

这就是我在我的回答(下面)中提到的那样吗?是吗? – Iamcool 2013-04-30 04:12:15

+0

这是对的。它应该看起来像这样, – pynovice 2013-04-30 04:12:51

+0

部门有ManyToMany(批次)和批次有部门ForeignKey ..是进入一些麻烦 – Iamcool 2013-04-30 04:20:46