2016-09-29 4 views
0
  1. Einige Companies repräsentieren einige PlaceTypes (Fitnessraum, Pool, etc.).
  2. Verschiedene PlaceTypes haben unterschiedliche Criterias für die Bewertung (Personal, Sauberkeit, etc.)
  3. Auf der Grundlage der Placetype des Unternehmens ist es notwendig, geeignete Kriterien anzuwenden, um diese Firma zu bewerten

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() 

Es gibt also eine Art von Duplizierung zwischen Companies -> PlaceTypes -> Criterias und Companies <- Ratings -> Criterias. Ist es o.k?Könnte jemand überprüfen, ob meine Beziehungen zwischen Modellen korrekt sind?

Antwort

0

Sie benötigen keine Firma als Fremdschlüssel in Ihrem Bewertungsmodell, das bereits über Kriterien verfügt, die über place_type verfügen, die auf Firmen verweist, d. H. Companies -> PlaceTypes -> Criterias -> Ratings.

+0

Sind Sie sicher? Wenn ich richtig liege, werden in diesem Fall Ratings auf PlaceTypes statt auf Companies angewendet, dh alle Unternehmen mit demselben PlaceType erhalten die gleichen Bewertungen. – TitanFighter

+0

Mit der Art, wie Sie es beschrieben haben, dachte ich, dass jeder Ihrer PlacesTypes zu einer Firma gehört scheint klar, dass Sie eine Viele-zu-Viele-Beziehung zwischen Unternehmen und Ortstypen beschreiben möchten. In diesem Fall würde ich das Firmenfeld aus PlaceTypes entfernen und stattdessen Folgendes in Ihrem Firmenmodell deklarieren: 'place_types = models.ManyToManyField (' PlaceTypes ') ' – blhsing

Verwandte Themen