2016-06-02 13 views
0

Ich bin ein Anfänger in Django und ich versuche, eine App zu machen, die Anwesenheitsstatus eines Benutzers in verschiedenen Kursen speichert. Ich habe eine Idee, wie man ein Benutzerprofilmodell erstellt und ein oder zwei zusätzliche Felder hinzufügt, wenn sich der Benutzer anmeldet.
Ich möchte ein separates Modell für die Teilnahme machen, das mehrere Spalten enthält (Kurscode, Name, besucht, abwesend) und ich möchte für jeden Benutzer verschiedene Tabellen erstellen. Ich versuchte mitDjango- Wie Benutzerdaten in verschiedenen Modellen hinzufügen?

user=models.OneToOneField(User) 

Dies funktioniert nicht. Wenn ich versuche, dieses Modell auf Admin-Seite zu sehen, die Fehler, die ich bekommen ist:

Keine Spalte wie attendance.user_id

Ich verwende Django 1.8. und python 2.7

+0

Klingt wie vielleicht hast du vergessen, die Migration zu tun? –

+0

Okay, ich habe versucht, die Migration erneut zu starten, und ich erhalte folgende Aufforderung: Sie versuchen, einen Benutzer ohne NULL-Berechtigung zur Teilnahme hinzuzufügen, ohne einen Standardwert zu verwenden. Nun, was wähle ich für das? Ich kann natürlich keinen Standardbenutzer angeben. Was könnte also der richtige Weg sein, um das zu tun, was ich versuche? Was ich meine ist, warum kann das nicht wie UserProfile-Klasse, die solche Probleme nicht aufwirft? – ChaoticTwist

+0

"Ich möchte für jeden Benutzer verschiedene Tabellen erstellen" Wolltest du das sagen? Sie haben sicherlich nicht vor, einen Tisch für jeden Benutzer zu haben, oder? – Tyler

Antwort

0

Sie verwenden die falsche Beziehung zwischen Ihren Modellen. Sie benötigen keine separate "Tabelle" pro Benutzer, Sie benötigen für jeden Benutzer eine Anwesenheitsliste. Etwas wie das Folgende sollte dich auf die richtige Spur bringen.

from django.db import models 

class Userprofile(models.Model): 
    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=30) 

class Attendance(models.Model): 
    user = models.Foreignkey(Userprofile) 
    attend = models.IntegerField() 
+0

Aber das würde die Anforderung nicht erfüllen. Die Anwesenheitstabelle enthält Spalten - (Kurscode, Name, besucht, abwesend). Jeder Benutzer hat Anwesenheitsrekord für 5 Kurse. Wie speichere ich alle und ordne sie einem bestimmten Benutzer zu? – ChaoticTwist

Verwandte Themen