使用 Django-taggit 和 django-taggit-serializer 有问题

2024-06-24

我正在尝试通过 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

try:

import six

class NewTagListSerializerField(TagListSerializerField):
    def to_internal_value(self, value):
        if isinstance(value, six.string_types):
            value = value.split(',')

        if not isinstance(value, list):
            self.fail('not_a_list', input_type=type(value).__name__)

        for s in value:
            if not isinstance(s, six.string_types):
                self.fail('not_a_str')

            self.child.run_validation(s)
        return value

class JobSerializer(TaggitSerializer,serializers.HyperlinkedModelSerializer):

    tags = NewTagListSerializerField()

发布带有 ' 的标签tags1,tags2'

原始源代码是:

def to_internal_value(self, value):
    if isinstance(value, six.string_types):
        if not value:
            value = "[]"
        try:
            value = json.loads(value)
        except ValueError:
            self.fail('invalid_json')

    if not isinstance(value, list):
        self.fail('not_a_list', input_type=type(value).__name__)

    for s in value:
        if not isinstance(s, six.string_types):
            self.fail('not_a_str')

        self.child.run_validation(s)

    return value

该错误是由json.loads(value)不成功,我不知道接受哪种数据类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Django-taggit 和 django-taggit-serializer 有问题 的相关文章

  • 如何在 Django 中每天精确执行一次命令?

    我正在开发一个基于 Django Web 的项目 在该项目中我需要构建一个按以下顺序工作的应用程序 1 用户打开一个页面 需要在其中输入command and a time 2 Django应用程序将在每天的给定时间执行该命令 直到用户关闭
  • 将 csrf 令牌传递给 Stripe

    我正在使用 stripe js 进行条纹支付 我需要设置一个回调 webhook 来接收来自 stripe 的请求 由于 webhook 是通过 stripe 发布的 我已将其标记为csrf excempt 提出这个观点有什么风险吗csrf
  • 渲染 StackedInline 字段时如何重写 str 方法?

    我有多对多关系 class GroupeCategoriesCategorie models Model groupe categories models ForeignKey GroupeCategories related name g
  • Django-获取外键对象列表

    假设我有以下模型 class ParentModel models Model name models CharField child models ForeignKey ChildModel class ChildModel models
  • 如何设置appache2的WSGI与python 3.7一起使用?

    我使用的是 ubuntu 16 04 并安装了 python 3 7 并使用以下说明将其设置为默认值 无法在 ubuntu 中将默认 python 版本设置为 python3 https stackoverflow com question
  • 使用 django-allauth 时 Django 无法找到静态文件

    当我使用 allauth 时 一切似乎都工作正常 除了 Django 现在无法找到静态文件 如果没有 allauth 所有静态文件都会被渲染 allauth 的设置需要添加 TEMPLATE CONTEXT PROCESSORS allau
  • Django - 扩展另一个应用程序 ModelAdmin?

    有没有办法扩展另一个应用程序 ModelAdmin 我有一个使用 django contrib comments 提供的功能的项目 CommentsAdmin ModelAdmin 类具有 actions flag comments app
  • Django 如何使表单字段可选

    在 django 中如何使表单字段可选 我的模型 class Student models Model first name models CharField max length 30 last name models CharField
  • 来自manytomanyfield中间表的django数据

    目前 我在 models py 中设置了以下模型结构 精简 class Admin models Model admin name models CharField unique True blank False null False ma
  • Django DetailView 按外键过滤

    我有点困惑 想利用 DetailView 功能 使用外键作为我的过滤器来显示数据 基本上我的模型看起来像这样 class Category models Model name models CharField max length 30 s
  • 链接到 Django 页面的最佳方式

    我设法为我的索引创建一个 URL 标记 但现在我很困惑如何添加到其他页面的链接 我把这个放在我的urls py url r index name index 接下来我将此标签放入 href 中 url index 但是如果我想创建一个新页面
  • django modelformset_factory - 管理表单数据丢失

    我仍在与表单集作斗争 我无法真正理解为什么会出现此错误 u ManagementForm 数据丢失或已被篡改 那是我的代码 请指出我的错误并帮助我解决这个问题 csrf protect transaction commit on succe
  • Django taggit,使用自定义标记名

    我已经设置了 django taggit 并且工作正常 所有标签都列在管理中的标签下 但是 我现在想将标签分为两组 英语标签和西班牙语标签 这就是我从文档中得到的here http django taggit readthedocs org
  • 在 django admin 中将 json 文本显示为友好列表

    我有一个 JSONField http djangosnippets org snippets 1478 http djangosnippets org snippets 1478 在模型中 我试图找出向管理员用户显示数据而不是 json
  • Django:如何从模型中验证 unique_together

    我有以下内容 class AccountAdmin models Model account models ForeignKey Account is master models BooleanField name models CharF
  • 从 Django 1.11 升级到 Django 2.1 后 request.POST 为空

    这篇文章是上一个问题的后续 Django request POST 空 https stackoverflow com questions 53227767 django request post empty 我有一个使用 Python 3
  • 未检测到 Django settings.py

    我对 Django 还很陌生 在正确加载我的 settings py 时遇到了一些困难 我收到以下错误 admin 配置不正确 将 django contrib admin 放入 INSTALLED APPS 设置中 以便 使用管理应用程序
  • 使用 get_queryset 对列表视图进行排序

    两种模型 帖子和作者该视图显示每个作者的最后一篇文章 作者是一个外键 我想按降序排列这些帖子 但这不起作用 模板继续以升序方式显示这些内容 我尝试以下操作 views py class LastestListView ListView co
  • Django 1.6:清除一张表中的数据

    我有一个名为 UGC 的表 想要清除该表中的所有数据 我不想重置整个应用程序 这也会删除所有其他模型中的所有数据 是否可以只清除一个模型 我还为我的应用程序配置了 South 如果这有帮助的话 你可以使用原始 SQL https docs
  • 如何忽略 Sentry 捕获中的某些 Python 错误

    我已将 Sentry 配置为捕获 Django Celery 应用程序中的所有错误 它工作正常 但我发现一个令人讨厌的用例是当我必须重新启动我的 Celery 工作人员 PostgreSQL 数据库或消息服务器时 这会导致数千种各种 无法访

随机推荐

  • Selenium IDE 中的条件检查

    我想检查是否使用硒填充了可能的必填字段 我非常愿意使用 IDE 来完成此操作 而不是导出到代码 更具体地说 如果国家 地区下拉列表的值为 英国 我想确保填写邮政编码字段 如果下拉列表设置为其他任何内容 则邮政编码字段可以留空 如果共识是我必
  • 如何根据 Oracle 中的动态列表检查 IN 条件?

    编辑 更改标题以适合下面的代码 我试图从 Oracle 表中检索可接受值的列表 然后对另一个表执行 SELECT 同时将某些字段与所述列表进行比较 我试图用光标来做到这一点 如下所示 但是失败了 DECLARE TYPE gcur IS R
  • gcc可以针对不同CPU进行交叉编译吗?

    安装在 fedora 16 上的 gcc 是否可以针对不同的 CPU 比如 SPARC 进行交叉编译 我已经有了一定的认识 如有错误 还需要专家指正 不同的操作系统的不同之处在于它们用于访问内核的系统调用 或者完全在于它们使用的内核 它是否
  • 使用 argparse 和 python 接受字典作为参数[重复]

    这个问题在这里已经有答案了 我试图用 argparse 接受 type dict 的参数 但无论输入如何 它都会给出无效 dict 值的错误 usr bin env python import argparse MYDICT key val
  • 如何在 Azure 上的 MVC 应用程序中托管和嵌入视频?

    我创建了一个基本应用程序并上传到 Azure 我想嵌入视频 以便用户可以从列表中进行选择并查看每个视频 例如 选择一部电影并观看其预告片 我在 MVC 解决方案中创建了两个文件夹 Posters 包含用作每个视频背景的 jpg 文件 Vid
  • 具有 2 个队列的 Spring AMQP 项目

    我正在开发一个涉及 2 个队列和多个与它们交互的侦听器的项目 流动 新的 HTTP 请求到达服务器 然后将其转换为一个对象 该对象将成为消息 该消息必须在两个队列中发布 我有两种类型的侦听器 它们从每个队列获取消息 然后我做任何我想做的事情
  • 如何防止不同浏览器渲染字体不同?

    我在尝试在所有浏览器中保持一致的字体样式时遇到问题 如下所示 safari的字体渲染系统使字体粗细比chrome的字体粗细小 Safari Chrome 我尝试使用在其他问题上找到的解决方案 尽管他们没有解决这个问题 如何在所有主要浏览器中
  • 获取对组件树上某种类型的所有指令的引用

    我有一个复杂的场景 需要帮助 我有一个指令 称为TagDirective 它被放置在我的应用程序中的多个元素上 我有另一个指令 QueryDirective 需要引用的所有实例TagDirective存在于其宿主元素以及层次结构中其上方的所
  • 适用于 Windows 的 D-Bus 等效项

    有人知道 Windows 的 Linux D Bus 机制吗 Thanks 选择你的毒药 http msdn microsoft com en us library aa365574 28VS 85 29 aspx http msdn mi
  • Selenium IDE - 如何处理 java 脚本警报和确认

    我是自动化测试的新手 并开始使用 Selenium IDE 作为自动化的选择 我只是想知道是否有任何方法可以使用 IDE 处理 java 脚本警报 举一个场景 我单击 删除 按钮 出现一个带有 确定 和 取消 选项的 java 脚本警告框
  • 猜谜游戏 python 二分查找

    我无法弄清楚我的代码有什么问题 我试图让用户想到 1 到 100 之间的数字 然后这个程序就能猜到它 该程序将范围的高数和低数相加 然后除以二 并将其用作猜测值 如果程序猜测的数字大于用户的数字 则用户输入 1 如果小于 则输入 1 如果猜
  • HTTPS:Laravel 使用 .htaccess (public/)

    我试图在我的 Laravel 项目中包含 https 而不使用 godaddy 仅使用htaccess没什么大不了的 因为我正在使用proxypass来自我的 SSL 认证网站 该网站将传递到我的 laravel 项目 我只需要把我的 la
  • maven- assembly-plugin 不添加与系统范围的依赖关系

    这是我的 pom 文件
  • 合并具有一对一关系的表

    我有 3 个用于会员系统的 MySQL 表 users 成为用户的最低要求 仅与帐户信息相关 电子邮件 密码 is activated 等 user profiles 用户提供的个人信息 姓名 地址 电话 user member profi
  • 文本对齐:-webkit-center 与文本对齐:中心

    有谁知道为什么 text align center 和 text align webkit center 之间有区别 例如 如果您有 section h1 Title h1 div class image div h1 h1 section
  • 如何在servlet中获取表单参数? request.getAttribute 不起作用

    是否可以让同一个 servlet 执行验证 似乎在这里可能需要利用某种递归 但是当我在电子邮件框中输入内容并单击 提交 时 电子邮件参数仍然为空 单击 提交 后 URL 更改为 http localhost servlet EmailSer
  • 微服务:有哪些优点和缺点?

    与其他架构相比 使用微服务有哪些优点和缺点 何时应该使用微服务有经验法则吗 Pros 萨姆 纽曼在构建微服务 https rads stackoverflow com amzn click com 1491950358 列举了微服务的主要优
  • MongoDB 将通过 $lookup 聚合运算符使用分片

    lookup是 MongoDB 3 2 中的新增功能 它对同一数据库中的未分片集合执行左外联接 以从 联接 集合中过滤文档进行处理 To use lookup the from集合不能被分片 另一方面 分片是一种有用的水平扩展方法 一起使用
  • Angular 2 将参数传递给构造函数引发 DI 异常

    我想在构造函数中的组件上设置字符串属性 但是当我尝试这样的操作时 Component selector wg app templateUrl templates html wg app html export class AppCompon
  • 使用 Django-taggit 和 django-taggit-serializer 有问题

    我正在尝试通过 taggit 和 taggit 序列化程序在我的模型中添加标签 我在 Rest 框架中制作 API 我按照说明进行操作 https github com glemmaPaul django taggit serializer