我正在尝试使用 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/