我正在尝试通过 taggit 和 taggit 序列化程序在我的模型中添加标签。我在 Rest 框架中制作 API。
我按照说明进行操作(https://github.com/glemmaPaul/django-taggit-serializer https://github.com/glemmaPaul/django-taggit-serializer)但这仍然是一个问题:
“标签”:[
“无效的json列表。以字符串形式提交的标签列表必须是有效的json。”]
/设置.py
INSTALLED_APPS = [
[...]
'rest_framework',
'taggit',
'taggit_serializer',
]
/models.py
tags = TaggableManager(blank = True)
/序列化器.py
class JobSerializer(TaggitSerializer,serializers.HyperlinkedModelSerializer):
# tag serializer
tags = TagListSerializerField()
view.py 中没有任何变化。
感谢@ykh帮助我解决这个问题,但是遇到新情况时出现错误:
当你想初始化该值时:
hao,free
结果会是这样的:
"tags": [
"hao",
"free"
],
But当我打算更新这个值时:
它自动显示rest框架中的Json文件:
如果你将数据输入你的 api,结果将是:
问题是,每次我尝试修改包含休息框架中的“标签”的实例时,括号和换行符都会自动添加到“标签”字段中,如图结果所示
更新:
看来我已经解决了这个问题,解决方案是重写序列化器中的创建函数:
使用 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