2017-10-05 4 views
0

Ich habe viele Fragen zu diesem Fehler in Django gesehen, aber ich bin ratlos, denn soweit ich das beurteilen kann, hat keine Tabelle in meiner Datenbank eine section_id Spalte. Ich erhalte den Fehler, wenn ein Benutzer versucht, sich zu registrieren, und views.py versucht, einen Benutzer zu erstellen. Ich änderte vor kurzem des „Profil“ Modell in meiner Anwendung (Profil Objekte werden automatisch neben Benutzern Objekte erstellt) ein Abschnitt haben Attribut eher als ein SECTION_ID Attribut, aber ich setzte Sie die Migrationen und neu erstellt die Datenbank mehr mal. Ich denke, dass es ein Problem mit den Migrationen sein könnte, aber ich habe wirklich keine Ahnung.Django Integrität Fehler "Spalte 'section_id' kann nicht null sein"

Hier ist das Profilmodell, das eine SECTION_ID Attribut verwendet haben:

class Profile(models.Model): 
    """ 
    An extension of the built-in Django user model to allow for the different types of users 
    """ 
    USER_TYPES = (
     ('S', 'Student'), 
     ('I', 'Instructor'), 
     ('C', 'Client') 
    ) 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    user_type = models.CharField(max_length=1, choices=USER_TYPES) 
    section = models.ForeignKey(Section, default=None) 

@receiver(post_save, sender=User) 
def create_user_profile(sender, instance, created, **kwargs): 
    if created: 
     Profile.objects.create(user=instance) 

@receiver(post_save, sender=User) 
def save_user_profile(sender, instance, **kwargs): 
    if instance.is_staff != 1: 
     instance.profile.save() 

Und hier ist der Code, der den Fehler erhöhen:

new_user = User.objects.create_user(email, email=email, password=password) 
+1

"keine Tabelle in meiner Datenbank hat eine Spalte section_id", eigentlich bedeutet es die Spalte "section" im Profilmodell. Warum versuchst du nicht 'section = models.ForeignKey (Abschnitt, leer = True, null = True)'? –

+0

und setzen Sie auch den Standardwert für 'user_type' –

+0

Sie sind ein Lebensretter @AvinashRaj! –

Antwort

0

Wie Avinash Raj sagte Einstellung leer und null für die Abschnitt Attribut war der Trick:

section = models.ForeignKey(Section, blank=True, null=True) 
Verwandte Themen