У меня есть две модели Django (упрощенно):Джанго Rest Framework: Частичное обновление (PATCH) и внешние ключи
class Author(models.Model):
name = models.CharField()
class Book(models.Model):
author = models.ForeignKey(Author)
title = models.CharField()
Для обеих моделей я использую основные ModelSerializers:
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = models.Author
fields = '__all__'
[similar code for BookSerializer]
Наконец, I» ве реализованы основные 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 с целым и просто обновив заголовок.
Я ничего не могу найти об этом в документах или в других местах в Интернете. Мне что-то не хватает?
Я использую PATCH, это своего рода точка ... – Rik
Тогда у вас может быть что-то в вашем коде или что вы не вставили это, чтобы это не произошло. Я не помню, что видел это, пока я использовал патч. – Linovia
Вы правы. Как оказалось, в представлении mixin, которое я написал, была ошибка. – Rik