我试图重写ListCreateAPIView的create方法,以便能够同时发布多个对象。项目保存正确,但我一直收到一个错误。在
我使用的是Django 1.10.4和drf3.5.3
在模型.py以下内容:
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)
在视图.py以下内容:
^{pr2}$在序列化程序.py以下内容:
class GenreInputSerializer(serializers.ModelSerializer):
class Meta:
model = Genre
fields = ('name', 'category',)
请求后数据(通过可浏览的API):
[
{
"name": "Reggae",
"category": null
},
{
"name": "Blues",
"category": null
}
]
这是回溯:
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'
对象被正确保存,但在访问时,在响应期间会引发错误序列化程序.data在
我看到过很多只使用many=True发布多个对象的例子,所以我不明白为什么这会引起错误,你知道吗?在
嗨,在你的定义列表上试试这个:
我敢打赌,错误是因为browsablepi试图显示一个与它从响应中获得的序列化程序匹配的表单,但由于不需要列表而失败。在
您应该尝试将请求作为纯JSON执行,它应该可以工作。 请注意,虽然正确的响应失败,但是应该创建您的内容。在
相关问题 更多 >
编程相关推荐