ePa*_*oal 5 python django rest dictionary
我正在尝试使用Django REST Framework将两个模型字段序列化为一个dicts列表.
这是我的model.py:
class Translation(models.Model):
translated_term = models.CharField(max_length=200)
translated_meaning = models.TextField()
language = models.CharField(max_length=200)
vocab = models.ForeignKey(Vocab, related_name='translates')
def __unicode__(self):
return '%s: %s' % ( self.language,self.translated_term)
Run Code Online (Sandbox Code Playgroud)
view.py:
class VocabViewSet(viewsets.ModelViewSet):
queryset = Vocab.objects.all()
serializer_class = VocabSerializer
Run Code Online (Sandbox Code Playgroud)
serializer.py:
class VocabSerializer(serializers.ModelSerializer):
...
translates= serializers.StringRelatedField(many=True)
...
class Meta:
model = Vocab
fields = (...,'translates',...)
Run Code Online (Sandbox Code Playgroud)
Api结果:
{
.....
"translates": [
"EN: Abyssal zone"
],
....
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何将我的翻译设置为这样的词组列表:
预期的API结果:
{
.....
"translates": [
{EN: "Abyssal zone"}
],
....
}
Run Code Online (Sandbox Code Playgroud)
我正在关注文档,但我不知道这是否是一种写法.我试着使用serializers.DictFields像这样:
class translateField(serializers.DictField):
child = serializers.CharField()
class VocabSerializer(serializers.ModelSerializer):
term_word = serializers.CharField(source='term.word',read_only=True)
kwdGroup = serializers.StringRelatedField()
translates = serializers.DictField(child=serializers.CharField())
class Meta:
model = Vocab
fields = ('uuid','id','term_word', 'meaning', 'source', 'translates','kwdGroup')
Run Code Online (Sandbox Code Playgroud)
它发生:
'RelatedManager'对象没有属性'items'
我很难找到克服这个问题的方法.你能否就这个问题向我提出意见?任何建议都会很棒.
谢谢.
| 归档时间: |
|
| 查看次数: |
2673 次 |
| 最近记录: |