【问题标题】:Tried so many things regarding Django migrations issue but still I can,t fix this error?尝试了很多关于 Django 迁移问题的方法,但我仍然无法修复此错误?
【发布时间】:2019-07-22 00:18:55
【问题描述】:

嘿,伙计们,我在过去两天的迁移中遇到了错误。我在模型中添加了一个新字段,然后我尝试运行 makemigratons 它运行良好,但是当我尝试运行 migrate 时,我得到了一个日期时间错误。经过一番努力,我最终不得不删除我的数据库。而且它工作得很好,但是当我尝试迁移时它现在显示给我

return Database.Cursor.execute(self, query, params) django.db.utils.OperationalError: no such table: app_upload

即使我有上传模型

here,s the models.py

from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse
from tinymce import HTMLField

from datetime import datetime

class Category(models.Model):
    title = models.CharField(max_length = 20)

    def __str__(self):
        return self.title

class Post(models.Model):
    image = models.ImageField()
    title = models.CharField(max_length = 100)
    body = HTMLField()
    published_date = models.DateTimeField(auto_now_add = True)
    categories = models.ManyToManyField(Category)
    featured = models.BooleanField(default = False)


    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog',kwargs = {
            'pk':self.pk
            })

    @property
    def get_comments(self):
        return self.comments.all()




class Comment(models.Model):
    post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name = "comments")
    name = models.CharField(max_length = 200)
    body = models.TextField(default = True)
    parent = models.ForeignKey("self",on_delete = models.CASCADE)
    pub_date = models.DateTimeField(auto_now_add = True)

    class Meta:
        ordering = ['-pub_date']

    def __str__(self):
       return self.name


    def children(self):
        return Comment.objects.filter(parent = self)

    @property
    def is_parent(self):
        if self.parent is not None:
            return False
        return True 


class Upload(models.Model):
    image = models.ImageField(upload_to = 'images',)
    file = models.FileField(upload_to = 'images/%Y/%M/%d/')

这里是创建的迁移

# Generated by Django 2.1.7 on 2019-02-27 13:37

from django.db import migrations, models
import django.db.models.deletion
import tinymce.models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Category',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=20)),
            ],
        ),
        migrations.CreateModel(
            name='Comment',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=200)),
                ('body', models.TextField(default=True)),
                ('pub_date', models.DateTimeField(auto_now_add=True)),
                ('parent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='app.Comment')),
            ],
            options={
                'ordering': ['-pub_date'],
            },
        ),
        migrations.CreateModel(
            name='Post',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('image', models.ImageField(upload_to='')),
                ('title', models.CharField(max_length=100)),
                ('body', tinymce.models.HTMLField()),
                ('published_date', models.DateTimeField(auto_now_add=True)),
                ('featured', models.BooleanField(default=False)),
                ('categories', models.ManyToManyField(to='app.Category')),
            ],
        ),
        migrations.CreateModel(
            name='Upload',
            fields=[
                ('image', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('file', models.DateTimeField(auto_now_add=True)),
            ],
        ),
        migrations.AddField(
            model_name='comment',
            name='post',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='app.Post'),
        ),
    ]

这里是uploads.py的迁移

由 Django 2.1.7 于 2019-02-28 06:22 生成

从 django.db 导入迁移、模型

类迁移(migrations.Migration):

dependencies = [
    ('app', '0002_auto_20190227_0541'),
]

operations = [
    migrations.AddField(
        model_name='upload',
        name='id',
        field=models.AutoField(auto_created=True, default=1, primary_key=True, serialize=False, verbose_name='ID'),
        preserve_default=False,
    ),
]

【问题讨论】:

    标签: django django-migrations


    【解决方案1】:

    您已删除数据库,因此没有这样的表。

    由于您已经删除了数据库,您还可以删除迁移文件并重新生成它们。

    【讨论】:

    • 你确定吗?删除了包括0002_auto_20190227_0541在内的所有迁移文件?那为什么在依赖项中呢?
    • 这是在我没有删除迁移之前
    【解决方案2】:

    如果您不担心数据库中的现有数据而只想修复迁移并启动并运行

    • 检查您的应用是否在
    INSTALLED_APPS = [
        ......
        'my_app',
        .....
    
    ]
    
    • 删除数据库
    • 创建数据库
    • 删除所有迁移文件,但不删除__init__.py
    • python manage.py makemigrations
    • python manage.py migrate

    【讨论】:

    • 如果有帮助,请告诉我。可能你删除后忘记创建数据库了。
    • 我做到了,但现在我无法创建超级用户。它给了我一个操作错误
    • 你在 INSTALLED_APP 中有 auth
    • 是的,我在已安装的应用中有身份验证
    • 你有自定义用户模型吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 2022-11-22
    相关资源
    最近更新 更多