当使用django AJAX喜欢功能时出现操作错误。

16 浏览
0 Comments

当使用django AJAX喜欢功能时出现操作错误。

这是我遇到的错误。

django.db.utils.OperationalError: photos_post_likes表不存在。

我在按照这个视频创建一个点赞按钮。 https://youtu.be/pkPRtQf6oQ8

当时我已经创建了模型(Post)。只是当我在models.py中添加了一行新代码(likes),并运行了makemigrations,它顺利地迁移了。但是,当我运行migrate时出现了这个错误。

以下是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') # 这一行代码导致了错误的发生
    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')

0
0 Comments

文章标题:Django AJAX点赞功能的操作错误及解决方法

在使用Django的AJAX点赞功能时,可能会遇到一些操作错误。如果出现这种情况,可以尝试运行以下命令:

python manage.py migrate --fake

。这个命令的具体作用不再详述,你可以在这篇文章中找到更多相关信息:Django migrate --fake and --fake-initial explained

如果错误仍然存在,你应该删除migrations文件夹中的所有文件(除了init.py),然后删除数据库中的所有表。然后,再次运行以下命令:

python manage.py makemigrations

python manage.py migrate

,一切应该正常工作。

但请注意,通过删除表,你将失去所有保存在这些表中的数据/查询。

如果这个方法对你有效,请告诉我,因为这在我之前的许多次尝试中都有效。

如果这个方法没有删除任何内容,那我现在应该手动删除它吗?

你所说的‘它’具体指的是什么?

嗯,如果命令‘python manage.py migrate --fake’对你没有解决问题,那么你应该通过SQL连接到你的数据库,并手动删除表。如果你告诉我你使用的是什么类型的SQL数据库,我甚至可以告诉你如何操作。

等等...你是说这个命令会删除项目中的迁移文件夹还是应用程序中的迁移文件夹?

不,仔细阅读。第一步:在你的应用程序中的'migrations'文件夹中,删除除了'init.py'之外的所有文件。第二步:手动删除数据库中的所有表。第三步:重新运行命令'python manage.py makemigrations'和'python manage.py migrate'。

当我在管理页面尝试编辑帖子时,就会出现错误。具体表现为:python manage.py migrate --fake命令有效,但是makemigrations命令显示没有检测到任何更改。当运行迁移命令时,也是相同的情况。

我们可以在聊天室中继续这个讨论

0