【问题标题】:An operational error when making django AJAX likes制作 django AJAX likes 时出现操作错误
【发布时间】:2021-04-22 08:35:19
【问题描述】:

这是我得到的错误。

django.db.utils.OperationalError:没有这样的表:photos_post_likes

我关注这个视频是为了创建一个赞按钮。 https://youtu.be/pkPRtQf6oQ8

那时我已经创建了模型(帖子)。就在我在 models.py 中添加新行(喜欢)并运行 makemigrations 时,它迁移没有任何问题。但是,当我运行迁移时,出现了这个错误。

这是models.py文件

from django.db import models
from django.utils import timezone
from django.urls import reverse
from django.contrib.auth.models import User
from PIL import Image

class Post(models.Model):
    date_shared = models.DateTimeField(default=timezone.now)
    caption = models.TextField(max_length=50)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    likes = models.ManyToManyField(User, blank=True, related_name='post_likes') # this line made the error occur
    image = models.ImageField(upload_to='post_images')

    def __str__(self):
        return self.caption

    def save(self):
        super().save()

        img = Image.open(self.image.path)

        if img.height > 800 or img.width > 800:
            output_size = (800, 800)
            img.thumbnail(output_size)
            img.save(self.image.path)

    def get_absolute_url(self):
        return reverse('home')

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    尝试运行以下命令:

    python manage.py migrate --fake
    

    我不会浪费时间深入了解该命令的具体作用,正如您所见 关于该主题的精彩帖子就在这里:Django migrate --fake and --fake-initial explained

    如果错误仍然存​​在,您应该删除位于 migrations 文件夹 init.py 除外) 内的所有文件,并且之后删除数据库中的所有表。

    然后简单地运行:

    python manage.py makemigrations
    python manage.py migrate
    

    再次,一切都应该工作。 但请记住,删除表格当然也会丢失其中保存的所有数据/查询。

    如果这对你有用,请告诉我,因为它以前对我有用过很多次。

    【讨论】:

    • 它没有删除任何内容。我现在应该手动删除它吗?
    • @Poornaka 你说的“它”到底是什么意思?
    • @Poornaka 好吧,如果命令 'python manage.py migrate --fake' 没有为您解决问题,那么您应该连接到您的数据库并通过 SQL 手动删除表。如果您说出您使用的是哪种 SQL-DB,我什至可以告诉您如何操作。
    • 等等...你的意思是它会删除项目或应用程序中的迁移文件夹吗? (命令)
    • @Poornaka 不,请仔细阅读。第 1 步:删除应用中“迁移”文件夹中除“init.py”以外的所有文件。第 2 步:手动删除数据库中的所有表。第 3 步:重新运行命令“python manage.py makemigrations”和“python manage.py migrate”。
    猜你喜欢
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多