回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图重写ListCreateAPIView的create方法,以便能够同时发布多个对象。项目保存正确,但我一直收到一个错误。在</p>
<p>我使用的是Django 1.10.4和drf3.5.3</p>
<p>在模型.py以下内容:</p>
<pre><code>class Genre(models.Model):
name = models.CharField(max_length=255, null=False, blank=False)
category = models.ForeignKey(GenreCategory, related_name='genres', blank=True, null=True)
active = models.BooleanField(default=False)
</code></pre>
<p>在视图.py以下内容:</p>
^{pr2}$
<p>在序列化程序.py以下内容:</p>
<pre><code>class GenreInputSerializer(serializers.ModelSerializer):
class Meta:
model = Genre
fields = ('name', 'category',)
</code></pre>
<p>请求后数据(通过可浏览的API):</p>
<pre><code>[
{
"name": "Reggae",
"category": null
},
{
"name": "Blues",
"category": null
}
]
</code></pre>
<p>这是回溯:</p>
<pre><code>Traceback (most recent call last):
File "/Users/malastas/Documents/museekenv/lib/python3.4/site-packages/django/core/handlers/exception.py", line 39, in inner
response = get_response(request)
File "/Users/malastas/Documents/museekenv/lib/python3.4/site-packages/django/core/handlers/base.py", line 217, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/Users/malastas/Documents/museekenv/lib/python3.4/site-packages/django/core/handlers/base.py", line 215, in _get_response
response = response.render()
File "/Users/malastas/Documents/museekenv/lib/python3.4/site-packages/django/template/response.py", line 109, in render
self.content = self.rendered_content
File "/Users/malastas/Documents/museekenv/lib/python3.4/site-packages/rest_framework/response.py", line 72, in rendered_content
ret = renderer.render(self.data, accepted_media_type, context)
File "/Users/malastas/Documents/museekenv/lib/python3.4/site-packages/rest_framework/renderers.py", line 701, in render
context = self.get_context(data, accepted_media_type, renderer_context)
File "/Users/malastas/Documents/museekenv/lib/python3.4/site-packages/rest_framework/renderers.py", line 674, in get_context
'post_form': self.get_rendered_html_form(data, view, 'POST', request),
File "/Users/malastas/Documents/museekenv/lib/python3.4/site-packages/rest_framework/renderers.py", line 507, in get_rendered_html_form
return self.render_form_for_serializer(serializer)
File "/Users/malastas/Documents/museekenv/lib/python3.4/site-packages/rest_framework/renderers.py", line 515, in render_form_for_serializer
serializer.data,
File "/Users/malastas/Documents/museekenv/lib/python3.4/site-packages/rest_framework/serializers.py", line 527, in data
ret = super(Serializer, self).data
File "/Users/malastas/Documents/museekenv/lib/python3.4/site-packages/rest_framework/serializers.py", line 266, in data
self._data = self.get_initial()
File "/Users/malastas/Documents/museekenv/lib/python3.4/site-packages/rest_framework/serializers.py", line 399, in get_initial
for field_name, field in self.fields.items()
File "/Users/malastas/Documents/museekenv/lib/python3.4/site-packages/rest_framework/serializers.py", line 400, in <listcomp>
if (field.get_value(self.initial_data) is not empty) and
File "/Users/malastas/Documents/museekenv/lib/python3.4/site-packages/rest_framework/fields.py", line 435, in get_value
return dictionary.get(self.field_name, empty)
AttributeError: 'list' object has no attribute 'get'
</code></pre>
<p>对象被正确保存,但在访问时,在响应期间会引发错误序列化程序.data在</p>
<p>我看到过很多只使用many=True发布多个对象的例子,所以我不明白为什么这会引起错误,你知道吗?在</p>