2016-04-12 10 views
0

Ich versuche herauszufinden, wie man eine Wahl in Django modelliert. Ich habe ein Modell Candidate. Dort hat genau zwei Kandidaten sein, so die Definition lautet wie folgt:Modellierungsergebnisse einer Wahl in Django

class Candidate(models.Model): 
    name = models.CharField(max_length=50) 
    surname = models.CharField(max_length=50) 
    def __str__(self): 
     return self.name + ' ' + self.surname 
    def clean(self): 
     if (len(Candidate.objects.all()) > 1): 
      raise ValidationError(
       "There are two candidates already" 
      ) 

Und ich mag ein Modell haben CountyResult, mit den folgenden Feldern: Kreis (Ausland), Einwohnerzahl, Einwohnerzahl, die für Abstimmung usw. und mit den endgültigen Ergebnissen der Wahl in diesem Landkreis.

Ich würde gerne die Wahlergebnisse in die admin Website einfügen können.

Und meine Frage ist: Wie kann ich die Candidate -> votes Zuordnung innerhalb der -Modell implementieren? Ich habe darüber nachgedacht, einfach Werte first_candidate_votes, second_candidate_votes zu speichern, aber das ist natürlich keine gute Lösung, da ich gerne einen Kandidaten entfernen könnte.

ich auch mit einem Fremdschlüssel candidate über das Hinzufügen ein SingleResult Modell dachte und irgendwie 'setzte es in der CountyResult Klasse, aber es gibt nicht so etwas wie eine Zwei-zu-Eins-Beziehung in Django

I Ich würde mich über Hinweise freuen. Ich bin neu in Django, so ist es fast sicher, dass die Lösung eher einfach und technisch ist

+0

Sie könnten auf ähnliche Manager in Django lesen möchten: https://docs.djangoproject.com/en/1.9/ref/models/relations/ – Johan

Antwort

0

Wenn ich Sie richtig verstehe, macht es am meisten Sinn für mich, 3 Modelle zu haben: Kandidat, County und Ergebnisse. County würde die Kreise, Einwohner und Wahlberechtigten Felder haben. Die Ergebnisse haben Fremdschlüssel für Kandidat und Grafschaft und dann das Feld für die Stimmenzählung (entweder Gesamt oder zwei Felder, wenn Sie die Stimmen getrennt halten möchten).

class Candidate(models.Model): 
    name = models.CharField(max_length=50) 
    surname = models.CharField(max_length=50) 

class County(models.Model): 
    name = models.CharField(max_length=50) 
    population = models.IntegerField(max_length=50) 
    eligible_voters = models.IntegerField(max_length=50) 

class Result(models.Model): 
    name = models.CharField(max_length=50) # you could give an election a name I suppose, i.e. 2016 primary 
    county = models.ForeignKey('County',) 
    winner = models.ForeignKey('Candidate',) 
    loser = models.ForeignKey('Candidate',) 
    total_votes = models.IntegerField(max_length=50) # break this out into other fields if you want more detail 
+0

So Sie zwei, dass jeder Kreis Referenzen sind darauf hindeutet, Ergebnisse? – Jytug

+0

@Jytug Siehe meine Bearbeitung. – smilebomb