django - django 中用于 GenericRelation 的 DRF 可写序列化程序
问题描述
我正在尝试拥有一个可写的序列化程序,它可以在单个 API 中创建/更新模型及其 GenericRelation 目标
class TaggedItem(models.Model):
tag_name = models.SlugField()
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
tagged_object = GenericForeignKey('content_type', 'object_id')
class Note(models.Model):
text = models.CharField(max_length=1000)
tags = GenericRelation(TaggedItem)
在上面,我想在 Note 上支持创建/更新端点。数据将是:
{
"text": "something",
"tags": [
{
"object_id": "1"
"tag_name": "something"
},
{
...
...
}
]
}
该文档只有以下简要说明:请注意,使用 GenericRelation 字段表示的反向通用键可以使用常规关系字段类型进行序列化,因为关系中目标的类型始终是已知的。
一种选择当然是覆盖创建,在 NoteSerializer 中更新,提取 TaggedItem 数据并手动调用 TaggedItemSerializer。
但是,由于 Note 是来自多个模型的 GenericRelation 目标,我想避免在每个源模型上都这样做
有没有更好的办法 ?据我所知,创建这些对象所需的所有信息都存在,因为关系的目标是已知的……所以我希望这种模式是具有 DRF 的一流公民。还没有找到任何东西。
解决方案
推荐阅读
- delphi - 在 Delphi 中使用 CreateProcess 时跳过 UAC 提示
- html - 在 PL/SQL 动态内容中将变量传递给 htp.p
- css - 如果 CSS 内容包含未声明的 CSS 变量,是否应该显示它?
- vue.js - v-根据标签选择数据搜索
- c# - EF Core 理解迁移
- c - 为什么需要 -pthread 作为编译 pthread c 程序的参数
- swift - NSMutableAttributedString 的 UserDefaults
- r - 如何在 .Rprofile 中配置主题编辑器和默认编码
- apache-spark - 如何更改 Spark 提交(通过纱线)报告频率
- sql - 如何仅获取字符串的一部分