2017-06-16 67 views
-1

我在我的models.py文件中添加了新的列,保存了我的代码,然后在Terminal我跑sudo python manage.py makemigrations music,然后是sudo python manage.py migrate。一旦运行sudo python manage.py migrate,我得到了Terminal一个错误说:为什么我的数据库不能工作?

这是我的index.html文件:

<!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> 

这是我的models.py文件:

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) 

这是我的views.py文件:

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

你当然不应该将你的迁移作为'sudo'运行。 –

+0

@DanielRoseman我试图运行它没有sudo,仍然无法正常工作。我不能'.save()'终端中的任何Person对象而不会出现错误 – bojack

+0

在其他迁移文件中,您是否看到任何使用电子邮件字段的迁移? –

回答

0

你发布的终端输出是没有错误的。它只是告诉你在你的数据库中发生了什么。

一切都应该没问题,除非有其他错误信息。

+0

是的,但我创建了一个Person对象并给出用户名,电子邮件和密码,然后'object.save()'然后'Person.objects.all()',我什么也没得到 – bojack

+0

当我做'object.save ()',我得到一个错误,说'OperationalError:表music_person没有列名为电子邮件 ' – bojack

+0

您可以手动检查您的数据库?检查表music_person是否存在并且具有列名称的电子邮件。如果没有,请检查您的settings.py。可能是错误配置的数据库问题。 – DeBaze

相关问题