<p>不需要将属性命名为<code>class</code>,这可能会导致各种问题。您可以将属性命名为<code>class_</code>,但仍要将其从名为<code>class</code>的源属性中提取出来,并以<code>class</code>的形式呈现为JSON。在</p>
<p>可以通过重写序列化程序的元类来实现这一点。下面是一个<code>serializers.py</code>文件的示例(模型和类很大程度上是直接从<a href="http://www.django-rest-framework.org/tutorial/1-serialization/" rel="nofollow">tutorial</a>中提取出来的)。在</p>
<p>主要的魔法是元类的这一部分</p>
<pre><code># Remap fields (to use class instead of class_)
fields_ = []
for name, field in fields:
if name.endswith('_'):
name = name.rstrip('_')
fields_.append((name, field))
</code></pre>
<p>这将获取您在序列化程序中定义的以下划线结尾的任何字段(即<code>field_</code>),并在绑定<code>Fields</code>并在序列化程序上设置<code>_declared_fields</code>属性时从名称中删除下划线。在</p>
^{pr2}$
<p>这是<em>模型.py</em>引用文件(django不允许字段名以下划线结尾)</p>
<pre><code>from django.db import models
class Snippet(models.Model):
title = models.CharField(max_length=100, blank=True, default='')
klass = models.CharField(max_length=100, default='yo')
</code></pre>
<p>这就是django shell的外观</p>
<pre><code>$ python manage.py shell
>>> from snippets.models import Snippet
>>> from snippets.serializers import SnippetSerializer
>>> from rest_framework.renderers import JSONRenderer
>>> from rest_framework.parsers import JSONParser
>>> snippet = Snippet(title='test')
>>> snippet.save()
>>> serializer = SnippetSerializer(snippet)
>>> serializer.data
{'title': u'test', 'pk': 6, 'class': u'yo'}
</code></pre>