Python中文
首页
教程
问答
标签
搜索
登录
注册
Django Rest Fram中序列化程序之间的公共字段混合
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有这个:</p> <pre><code>class GenericCharacterFieldMixin(): attributes = serializers.SerializerMethodField('character_attribute') skills = serializers.SerializerMethodField('character_skill') def character_attribute(self, obj): character_attribute_fields = {} character_attribute_fields['mental'] = {str(trait_item.get()): trait_item.get().current_value for trait_item in obj.mental_attributes} character_attribute_fields['physical'] = {str(trait_item.get()): trait_item.get().current_value for trait_item in obj.physical_attributes} character_attribute_fields['social'] = {str(trait_item.get()): trait_item.get().current_value for trait_item in obj.social_attributes} return character_attribute_fields def character_skill(self, obj): character_skill_fields = {} character_skill_fields['mental'] = {str(trait_item.get()): trait_item.get().current_value for trait_item in obj.mental_skills} character_skill_fields['physical'] = {str(trait_item.get()): trait_item.get().current_value for trait_item in obj.physical_skills} character_skill_fields['social'] = {str(trait_item.get()): trait_item.get().current_value for trait_item in obj.social_skills} return character_skill_fields class MageSerializer(GenericCharacterFieldMixin, serializers.ModelSerializer): player = serializers.ReadOnlyField(source='player.username') arcana = serializers.SerializerMethodField() def get_arcana(self, obj): if obj: return {str(arcana): arcana.current_value for arcana in obj.linked_arcana.all()} class Meta: model = Mage fields = ('id', 'player', 'name', 'sub_race', 'faction', 'is_published', 'power_level', 'energy_trait', 'virtue', 'vice', 'morality', 'size', 'arcana', 'attributes', 'skills') depth = 1 </code></pre> <p><code>GenericCharacterFieldMixin</code>是字符字段的混合体,这些字符是通用的,即所有类型的字符都是通用的。在</p> <p>我希望我的法师序列化程序有这些'混合'而不是c/p然后在所有类型的字符(法师是一种字符类型)希望这将增加我的网络应用程序干燥。在</p> <p>问题出在车型上我有这个:</p> ^{pr2}$ <p>这意味着我得到了这个错误:</p> <pre><code>TypeError at /characters/api/mages <django.contrib.contenttypes.fields.create_generic_related_manager.<locals>.GenericRelatedObjectManager object at 0x00000000051CBD30> is not JSON serializable </code></pre> <p><strong>Django Rest Framework认为我想序列化我的泛型关系。</strong></p> <p>如果我重命名模型中的字段(<code>s/attributes/foos/g</code>,<code>s/skills/bars/g</code>),那么我得到一个不同的(不太清楚?)错误:</p> <pre><code>ImproperlyConfigured at /characters/api/mages Field name `attributes` is not valid for model `ModelBase`. </code></pre> <p>如何在不混淆DRF的情况下将这些方法和字段拉入mixin?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>解决办法很简单,就是改变</p> <pre><code>class GenericCharacterFieldMixin(): </code></pre> <p>到</p> ^{pr2}$
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何实现一个类,该类在每次更改其属性时更改其“last_edited”变量?
5 回答
如何实现一个类?
6 回答
如何实现一个类的属性设置?
8 回答
如何实现一个能够存储输入并反复访问输入的存储系统?GPA计算器
1 回答
如何实现一个自定义的keras层,它只保留前n个值,其余的都归零?
10 回答
如何实现一个行为类似于Python中序列的最小类?
10 回答
如何实现一个请求的多线程或多处理
6 回答
如何实现一个长时间运行的、事件驱动的python程序?
10 回答
如何实现一个颜色一致的非舔深度地图实时?
2 回答
如何实现一个默认的SQLAlchemy模型类,它包含用于继承的公共CRUD方法?
2 回答
如何实现一次热编码的生成函数
6 回答
如何实现一种在数组中删除对的方法
2 回答
如何实现一类支持向量机用于图像异常检测
10 回答
如何实现一维阵列到二维阵列的复制转换
6 回答
如何实现三维三次样条插值?
9 回答
如何实现三维数据的连接组件标签?
2 回答
如何实现三角形的空间索引
4 回答
如何实现不同模块中对象之间的交互
8 回答
如何实现不同版本的库共存?
7 回答
如何实现不同的班权重
7 回答