Python 为什么赢了';我的数据库不工作吗?

Python 为什么赢了';我的数据库不工作吗?,python,django,Python,Django,我在我的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&g

我在我的
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>
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)
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>")
这是我的
views.py
文件:

<!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>
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)
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>")
从django.http导入HttpResponse
从django.shortcuts导入渲染
从。模型进口人
def索引(请求):
如果request.method==“POST”:
email=request.POST.get('email')
userName=request.POST.get('userName')
如果电子邮件和用户名:
user=Person.objects.create(email=email,username=username)
user.save()
返回渲染(请求'music/index.html')
def详细信息(请求、用户id):#测试第2页
返回HttpResponse(“第#(测试此项)”+str(用户id)+”

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


一切都应该正常,除非有其他错误消息。

是的,但在我创建了一个Person对象并给出用户名、电子邮件和密码之后,然后是
object.save()
,然后是
Person.objects.all()
,当我执行
object.save()
,我什么也得不到,我收到一个错误,上面写着
操作错误:table music\u person没有名为email的列
您可以手动检查您的数据库吗?检查表music_person是否存在,是否有名为email的列。如果没有,请检查settings.py。可能是配置错误的数据库问题。它不存在。我正在办理入住/管理手续。事实上,当我点击我的/admin页面中的Person(检查数据库中的内容)链接时,它会在/admin/music/Person/尝试删除模型中的电子邮件行。再次运行makemigrations和migrate,看看是否可以在不使用email字段的情况下添加person对象。您当然不应该以
sudo
@DanielRoseman的身份运行迁移。我尝试在没有sudo的情况下运行它,但仍然无法运行。我无法
.save()
终端中的任何Person对象都会在您的其他迁移文件中出现错误,您是否在电子邮件字段中看到任何迁移?