【问题标题】:Could anyone check if my relations between models are correct?谁能检查我的模型之间的关系是否正确?
【发布时间】:2017-02-08 09:39:44
【问题描述】:
  1. 一些Companies 代表一些PlaceTypes(健身房、游泳池等)。
  2. 不同的PlaceTypes有不同的Criterias进行评价(人员、清洁度等)
  3. 根据公司的 PlaceType,有必要应用适当的标准来评估这家公司

class Companies(models.Model):
    name = models.CharField()

class PlaceTypes(models.Model):
    name = models.CharField()  # Gym, pool, etc.
    company = models.ForeignKey(Companies)

class Criterias(models.Model):
    name = models.CharField()  # Staff, cleanness, etc.
    place_type = models.ForeignKey(PlaceTypes)

class Ratings(models.Model):
    company = models.ForeignKey(Companies)
    criteria = models.ForeignKey(Criterias)
    votes = models.PositiveIntegerField()
    total = models.PositiveIntegerField()

所以,Companies -> PlaceTypes -> CriteriasCompanies <- Ratings -> Criterias 之间存在某种重复。还好吗?

【问题讨论】:

    标签: django database database-design django-models


    【解决方案1】:

    您不需要 company 作为 Ratings 模型中的外键,它已经有条件,它的 place_type 指向 Companies,即 Companies -> PlaceTypes -> Criterias -> Ratings

    【讨论】:

    • 你确定吗?如果我是正确的,在这种情况下,评级将应用于 PlaceTypes 而不是公司,即具有相同 PlaceType 的所有公司都获得相同的评级
    • 按照您的描述方式,我认为您的每个 PlacesTypes 都属于一家公司,但现在似乎很清楚您的意思是描述公司和地点类型之间的多对多关系,在在这种情况下,我会从 PlaceTypes 中删除 company 字段,而是在您的 Companies 模型中声明以下内容:place_types = models.ManyToManyField('PlaceTypes')
    猜你喜欢
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    相关资源
    最近更新 更多