【发布时间】:2019-03-12 17:07:08
【问题描述】:
我正在尝试通过 taggit 和 taggit 序列化程序在我的模型中添加标签。我在休息框架中制作我的 API。 我按照说明(https://github.com/glemmaPaul/django-taggit-serializer),但还是有问题:
“标签”:[ "无效的json列表。以字符串形式提交的标签列表必须是有效的json。"]
/setting.py
INSTALLED_APPS = [
[...]
'rest_framework',
'taggit',
'taggit_serializer',
]
/models.py
tags = TaggableManager(blank = True)
/serializer.py
class JobSerializer(TaggitSerializer,serializers.HyperlinkedModelSerializer):
# tag serializer
tags = TagListSerializerField()
view.py 中的注释发生了变化。
感谢@ykh 帮我解决了这个问题,但是遇到了错误的新情况:
当你想初始化值时:
hao,free
结果会是这样的:
"tags": [
"hao",
"free"
],
但是当我打算将更新放入这个值时: 它自动显示了rest框架中的Json文件:
如果你把数据放到你的 api 中,结果会是:
问题是每次我尝试修改rest框架中包含'tag'的实例时,括号和换行符会自动附加到'tag'字段中,如图所示强>
更新: 看来我已经解决了这个问题,解决方法是覆盖序列化器中的create函数:
使用 django-taggit-serializer。和
def create(self, validated_data):
tags = validated_data.pop('tags')
instance = super(JobSerializer, self).create(validated_data)
instance.tags.set(*tags)
return instance
【问题讨论】:
标签: django django-rest-framework django-taggit