django - `fields` 选项必须是列表或元组或“__all__”。得到了str
问题描述
我正在尝试为我的文章模型创建评论,但我在它说的序列化程序部分遇到问题
The `fields` option must be a list or tuple or "__all__". Got str.
我已经包含了需要的部分,但我不知道问题出在哪里。
模型.py
class Comment(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
author = models.OneToOneField(UserProfile, on_delete=models.CASCADE, related_name='author1')
article = models.OneToOneField(Article, on_delete=models.CASCADE, related_name='author2')
content = models.CharField(max_length=100)
序列化程序.py
class CommentCreateSerializer(serializers.ModelSerializer):
content = serializers.CharField(required=False)
class Meta:
model = Comment
fields = ('content')
def create(self, validated_data):
return Comment.objects.create(**validated_data)
有人知道为什么吗?
解决方案
它应该是
fields = ('content',)
这是因为,('content')
是一个带有不必要括号的字符串,其中 as('content',)
是一个元组
或者,你也可以试试这个……
fields = ['content']
推荐阅读
- node.js - Node.js 解析记录集输出
- android - 使用 Android 设备管理 API 可以将密码限制为数字
- python-3.7 - 如何打印python记录器信息级别
- gradle - 来自根多项目的本地依赖项在 gradle 中构建
- lazarus - TRasterImage 变量的 FreeImage 和 FreeImage 之间的区别?
- django - 如何在django中获取字段的值
- python - 在python的except子句中将变量值设置为空字符串
- android - 最佳应用性能
- java - 如何跟踪 Java 错误?
- angular - Syncfusion ej2-angular-calendars 包需要映射到 systemjs.config.js 但这个文件在 Angular-cli 中不再存在