【发布时间】:2017-04-14 14:57:56
【问题描述】:
我有两个 Django 模型(简化):
class Author(models.Model):
name = models.CharField()
class Book(models.Model):
author = models.ForeignKey(Author)
title = models.CharField()
对于这两个模型,我都使用基本的 ModelSerializer:
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = models.Author
fields = '__all__'
[similar code for BookSerializer]
最后,我实现了基本的 ModelViewSets:
class AuthorViewSet(viewsets.ModelViewSet):
queryset = models.Author.objects.all()
serializer_class = serializers.AuthorSerializer
[similar code for BookViewSet]
现在,我正在部分更新现有书籍,省略“作者”,因为它不应该改变。
PATCH /api/v1/book/1/
JSON data: {'title': 'Lord of the Flies'}
我收到此错误:
HTTP 400 Bad Request
Allow: GET, PUT, PATCH, DELETE, OPTIONS
Content-Type: application/json
Vary: Accept
{
"author": [
"This field is required."
]
}
我认为这与“作者”是 FK 的事实有关。但是,我希望 DRF 能够通过保持 Book 对象的关系完整并仅更新标题来处理此问题。
我在文档或网络上的其他地方找不到任何关于此的信息。我一定是错过了什么?
【问题讨论】:
标签: foreign-keys django-rest-framework