2016-09-29 8 views
0
  1. Companiesの一部は、PlaceTypes(ジム、プールなど)を表します。
  2. 異なるPlaceTypesは、当社のPlaceTypeに基づいて評価のための異なるCriterias(スタッフ、清浄度など)
  3. を持って、この会社に

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() 
を評価するために適切なのcriteriasを適用する必要があります

Companies -> PlaceTypes -> CriteriasCompanies <- Ratings -> Criteriasの間に何らかの重複があります。大丈夫ですか?モデル間の関係が正しいか誰でも確認できますか?

答えて

0

貴社の評価モデルに会社を指定する必要はありません。あなたの評価モデルには、企業を示すplace_type(つまりCompanies -> PlaceTypes -> Criterias -> Ratings)を持つ基準が既にあります。

+0

本当ですか?私が正しいとすれば、この場合、評価は企業の代わりにPlaceTypeに適用されます。つまり、同じPlaceTypeを持つすべての企業が同じ評価を受け取ります。 – TitanFighter

+0

あなたの意見では、各PlacesTypesは会社に属していましたが、この場合、PlaceTypeから会社フィールドを削除し、その代わりにCompaniesモデルに次のように宣言します: 'place_types = models.ManyToManyField( ' PlaceType ') ' – blhsing

関連する問題