2017-06-16 3 views
-1

Ich fügte neue Spalten in meine models.py Datei, speicherte meinen Code, dann in Terminal Ich lief sudo python manage.py makemigrations music gefolgt von sudo python manage.py migrate. Nach sudo python manage.py migrate läuft, bekomme ich einen Fehler in Terminal sagen:Warum funktioniert meine Datenbank nicht?

Hier ist meine index.html Datei:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>The Page</title> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
     {% load static %} 
    <link rel="stylesheet" href="{% static 'index.css' %}"> 
</head> 

<body> 


    <form class="col-md-4 col-md-offset-4" method="POST" name="formHandler"> 
     {% csrf_token %} 
     <div class="userNameMovement"> 
      <label for="usr">Email:</label> 
      <input class="form-control" id="email" name="email" placeholder="email" required="required"> 
     </div> 

     <div class="passwordMovement"> 
      <label for="usr">Username:</label> 
      <input class="form-control" id="userName" name="userName" placeholder="Username" required="required"> 
     <button type="submit" class="btn btn-default">Submit</button> 
    </form> 

    </body> 
</html> 

Hier ist meine models.py Datei:

from django.db import models 

class Person(models.Model): 
    email = models.CharField(max_length=20, default=4) 
    userName = models.CharField(max_length=20, default=4) 

    def __str__(self): 
     return self.email + " - " + self.userName 

class UI(models.Model): 
    person = models.ForeignKey(Person, on_delete=models.CASCADE) 

Hier ist meine views.py Datei:

from django.http import HttpResponse 
from django.shortcuts import render 
from .models import Person 

def index(request): 
    if request.method == 'POST': 
     email = request.POST.get('email') 
     userName = request.POST.get('userName') 
     if email and userName: 
      user = Person.objects.create(email=email, username=userName) 
      user.save() 
    return render(request, 'music/index.html') 

def detail(request, user_id): # Testing out page 2 
    return HttpResponse("<h2>Page # (testing this out) " + str(user_id) + "</h2>") 
+1

Sie sollten auf jeden Fall nicht Ihre Migrationen als 'sudo' ausgeführt werden. –

+0

@DanielRoseman Ich habe versucht, es ohne Sudo zu laufen, funktioniert immer noch nicht. Ich kann '.save()' kein beliebiges Person-Objekt im Terminal ohne einen Fehler zu bekommen – bojack

+0

In Ihren anderen Migrationsdateien sehen Sie eine Migration mit dem E-Mail-Feld? –

Antwort

0

Die Terminal-Ausgang, den Sie posten, ist kein Fehler. Es sagt Ihnen nur, was in Ihrer Datenbank passiert ist.

Alles sollte in Ordnung sein, es sei denn, andere Fehlermeldungen sind ..

+0

Ja, aber nachdem ich ein Person-Objekt erstellt und einen Benutzernamen, eine E-Mail und ein Passwort und dann 'object.save()' und dann 'Person.objects.all()' angegeben habe, bekomme ich nichts – bojack

+0

Wenn ich 'object.save 'mache() ', Erhalte ich einen Fehler, der besagt, dass OperationalError: table music_person keine Spalte namens email hat ' – bojack

+0

Können Sie Ihre Datenbank manuell überprüfen? Überprüfen Sie, ob die Tabelle music_person existiert und eine Spalte namens email hat. Überprüfen Sie Ihre settings.py wenn nicht. Kann ein falsch konfiguriertes Datenbankproblem sein. – DeBaze

Verwandte Themen