Erstellen eines Fremdschlüssels in Django-Modell
Habe ich Folgendes in meinem Studenten-Modell. Ich will zu verfolgen, den Zeitpunkt von jedem Punkt zu jedem Schüler. Die Idee wäre so, dass ich sehen konnte, nicht nur, wie viele Punkte jeder student hat, sondern auch das Datum jeder Punkt gegeben wurde. In der Zukunft möchte ich sehen, der trend der Schüler Punkte. Wie sollte ich dies angehen? Sollte ich einen Fremdschlüssel in einer anderen Klasse. Ich bin neu hier, also vielen Dank für das Lesen.
class Student(models.Model):
CLASS_CHOICES = (
(u'Yoga','Yoga'),
(u'Spanish', 'Spanish'),
(u'French', 'French'),
(u'Dance', 'Dance'),
)
name = models.CharField(max_length=30)
points = models.IntegerField(max_length=4)
classname = models.CharField("Class Name",max_length=20, choices=CLASS_CHOICES)
Getrennt, würde ich die Frage, ob es richtig ist, haben
classname
als ein Feld, auf Studentische. Dies bedeutet, ein Schüler kann immer nur nehmen Sie eine Klasse.InformationsquelleAutor Zach | 2012-03-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denke ich, können Sie aufgeteilt werden soll, aus der Klasse (ich nenne es 'Natürlich', um so nicht in Konflikt mit dem Python Idee, Klasse), und das verfolgen der Punkte (d.h., erzielt) verdient.
Dann der student kann viele Kurse und bekommen eine Reihe von Punkt-scores (d.h., test erzielt?) für jeden Kurs.
InformationsquelleAutor alan
Könnte man etwas wie dieses:
Sehr einfach zu bedienen:
Ich war mir nicht sicher, ob Sie wollte von track-Punkten pro Klasse zu. In diesem Fall, fügen Sie einfach den Klassennamen auf den Punkt-Modell.
Beachten Sie auch, dass Punkt.creation_datetime wird automatisch das Datum und die Zeit, die das Modell gespeichert. Ich habe gerade gebucht eine grundlegende Muster, die Sie anpassen können, um Ihre Bedürfnisse.
ja, das ist richtig. Möchte ich sehen, der trend für jeden Schüler.
InformationsquelleAutor jpic
Ich würde ein neues Dokument mit dem Namen Punkte, die ein datetime-Feld und ändern von Schüler zu haben, einen Verweis auf das Document-Punkte anstatt Punkte als IntegerField.
Wenn Sie wurden mit mongoengine, würde ich empfehlen, die Punkte ein EmbeddedDocument und dessen Einbettung in Student.
Guter Punkt. Ich bin es gewohnt, mongoengine und daher verwenden EmbeddedDocuments. Meine ursprüngliche Antwort hatte, aber ich erkannte die OP ist nicht mit mongoengine also änderte ich meine Antwort, verpasste aber den Abschluss der Referenz-Teil.
InformationsquelleAutor Sid