python - Django 操作错误未知列

标签 python mysql django

我正在尝试使用 Django Rest Framework 和 MySQL 数据库创建 CRUD。我使用 sqlclient 作为 MySQL 连接的连接器。 问题是当我想做请求时,它总是抛出下一个错误。

django.db.utils.OperationalError: (1054, "Unknown column 'author_id' in 'post'")

我没有在我的代码或数据库中声明 author_id 变量,我不知道为什么 django 说author_id 列是必需的。

我使用的模型是这样的:

class Post(models.Model):
    post_id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateField(default = timezone.now)
    author = models.ForeignKey("auth.User", db_column='author', on_delete = models.CASCADE)

    class Meta:
        managed = True
        db_table = 'post'

序列化器如下所示:

class PostSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Post
        fields = ['post_id', 'title', 'text', 'created_date']

View 设置如下:

class PostViewSet(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    permission_classes = [
        #permissions.IsAuthenticatedOrReadOnly  #Permission for unauthorized GET requests
        IsGetOrIsAuthenticated   # Custom permission for unauthorized GET requests
    ]
    serializer_class = PostSerializer

    def perform_create(self, serializer):
        print(self.request.user.id)
        serializer.save(author=self.request.user.id)

我真的不明白为什么要创建 author_id 如果代码或数据库中没有任何地方。为什么要创建它?我需要做什么才能使应用程序正常工作?

最佳答案

作者列您引用为用户表的外键,django 将此作者列存储为author_id作为内部字段,因为它引用用户表的pk(id)。

尝试 def Perform_create(self, 序列化器): 打印(self.request.user.id) 序列化器.save(author_id=self.request.user.id)

关于python - Django 操作错误未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57138407/

相关文章:

python - 使用 if/else 语句在 pandas 列中查找特定单词字符串

mysql - 当元组的一部分在另一个表中使用时,无法删除关系表中的元组(但整个元组不在该其他表中)

django - 如何在 django 模板中管理 Javascript 模块?

django - 是否可以使用文本和 json 对象在 django 中返回 HttpResponse?

python - Matplotlib/Pandas 中的链接和画笔——在另一个图中绘制一个图中的选定点

Python Sqlite 转义字符串选择列

mysql - 如何在列中显示空白结果的某些文本。数据库

php - MySQL、PHP 和 AS3 - 根据 ID 显示内容

python - django:redis:CommandError: 你没有设置ASGI_APPLICATION,这是运行服务器所需要的

Python 对象缓存