python - Djongo 没有使用 Django-rest-framework 正确获取对象数组嵌入字段
问题描述
我无法将代码数组显示为 Django 上的嵌入字段。
在 Django Administration 中添加字段可以正常工作。(见下文)
但是,在 Django Rest Framework 上,它没有将其显示为
嵌入式字段。
这是我的 Django models.py代码
from djongo import models
from django import forms
class Order(models.Model):
code = models.CharField(max_length=3, blank=False, null=False)
quantity = models.IntegerField()
def __str__(self):
return '%s %s' % (self.code, self.quantity)
class OrderForm(forms.ModelForm):
class Meta:
model = Order
fields = (
'code', 'quantity'
)
class Portfolio(models.Model):
username = models.CharField(
primary_key=True, max_length=65, default="", blank=False, null=False)
codes = models.ArrayModelField(
model_container=Order,
model_form_class=OrderForm
)
谢谢!
解决方案
After a bit of research, I found the answer on https://github.com/nesdis/djongo/issues/115.
I altered serializers.py
to check for EmbeddedModelFields or ArrayModelFields:
The def get_codes
checks to see if the field is an EmbeddedModelField or ArrayModelField model. If so, then accommodate the field.
from rest_framework import serializers
from portfolio.models import Portfolio
class PortfolioSerializer(serializers.ModelSerializer):
codes = serializers.SerializerMethodField()
class Meta:
model = Portfolio
fields = ('username', 'codes')
def get_codes(self, obj):
return_data = None
if type(obj.codes) == list:
embedded_list = []
for item in obj.codes:
embedded_dict = item.__dict__
for key in list(embedded_dict.keys()):
if key.startswith('_'):
embedded_dict.pop(key)
embedded_list.append(embedded_dict)
return_data = embedded_list
else:
embedded_dict = obj.embedded_field
for key in list(embedded_dict.keys()):
if key.startswith('_'):
embedded_dict.pop(key)
return_data = embedded_dict
return return_data
推荐阅读
- tomcat - 无法在 wso2am 3.1.0 的 tomcat 访问日志中花费时间
- puppeteer - 如何更新 Puppeteer 的 Chromium?
- javascript - 将计算出的 jQuery 值/变量提供给 CSS 类
- python - 缓冲区溢出示例地址
- java - 如何在 Wiremock 中验证对相同 url 但具有不同主体的两个发布请求?
- typescript - TypeScript 中由泛型类型组成的对象(类型递归)
- java - 错误测试junit时间戳java格式json
- amazon-web-services - 如何使用 AWS Kinesis Firehose 将嵌套结构推送到 Redshift
- python - Python Cx_Oracle 选择查询将元组列表与 WHERE IN 子句绑定
- django - 亚马逊订单的电子邮件自动化 - MWS API/SP API