制作 django AJAX likes 时出现操作错误

Posted

技术标签:

【中文标题】制作 django AJAX likes 时出现操作错误【英文标题】:An operational error when making 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')

【问题讨论】:

【参考方案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”。

以上是关于制作 django AJAX likes 时出现操作错误的主要内容,如果未能解决你的问题,请参考以下文章

使用ajax在Django中点击like按钮时如何改变like按钮的颜色并增加一

Django Ajax Likes 工作不正确:jQuery 的问题

Django3 Like Ajax Button Book By Antonio Mele

Django Ajax 发布 500 内部错误

如何在 Django 的 ajax POST 中返回新的 csrf 令牌?

发送 ajax 请求 django 时出现 400 错误