如果我有类似GFK的继承模型Assets
(Asset.model
),它有一个资产标识、资产名称和一个{Asset
模型等。。。基于this),并且我想为我的Account
中的所有资产提供一个API端点,我可以在Account
模型上拥有一个属性,该属性是扩展不同资产类型的列表:
#Account model
@property
def assets(self):
assets = []
assets.extend(self.onetype_set.all())
assets.extend(self.secondtype_set.all())
…
return assets
我需要一个帐户的序列化程序
^{pr2}$我假设每种资产类型
class OneTypeSerializer(serializers.ModelSerializer):
class Meta:
model = OneType
fields = ('asset_id', 'asset_name',)
class SecondTypeSerializer(serializers.ModelSerializer):
…
…
但是我一直收到一个错误:Object of type 'OneType' is not JSON serializable
(我理解这个错误意味着我需要将模型序列化为JSON,但是我认为模型会调用模型的序列化程序….)
由于DRF视图集的内部工作方式,堆栈跟踪似乎没有什么帮助,但这里是:
/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/encoder.py in default
else:
return list(iterable)
# Let the base class default method raise the TypeError
return JSONEncoder.default(self, o)
"""
raise TypeError("Object of type '%s' is not JSON serializable" %
o.__class__.__name__) ...
def encode(self, o):
"""Return a JSON string representation of a Python data structure.
>>> from json.encoder import JSONEncoder
>>> JSONEncoder().encode({"foo": ["bar", "baz"]})
▼ Local vars
Variable Value
o <OneType: AssetName - Type 1 : Account 2>
self <rest_framework.utils.encoders.JSONEncoder object at 0x11dce1668>
在Viewsets.py公司名称:
class AssetViewSet(viewsets.ModelViewSet):
"""
This viewset automatically provides `list`, `create`, `retrieve`, `update` and `destroy` actions.
"""
serializer_class = AssetSerializer
permission_classes = (permissions.IsAuthenticated, IsOrganizationMember,)
def get_queryset(self):
slug = self.kwargs['slug']
return Account.objects.filter(slug=slug)
另外,这更像是一个DRF问题(我没有使用正确的queryset)还是python问题(我没有为对象/类提供可序列化的方法/类)?在
目前没有回答
相关问题 更多 >
编程相关推荐