Не могу написать сериализатор для модели, который будет подставлять в значение поля id текущего пользователя в момент создания записи, в остальное же время возвращающий только id и ФИО пользователя.
Модель:
from django.models import models from django.conf import settings class NewsItem(models.Model): author = models.ForeignKey(settings.AUTH_USER_MODEL)
Сериализаторы:
class NewsReadSerializer(serializers.ModelSerializer): author = UserSerializer() class Meta: model = NewsItem class NewsWriteSerializer(serializers.ModelSerializer): class Meta: model = NewsItem
В api.py нужный сериализатор выбирается путём анализа параметров объекта request:
class NewsList(ListCreateAPIView): queryset = NewsItem.objects.sorted('-pub_date') def get_serializer_class(self, *args, **kwargs): if self.request.method == 'GET': return NewsReadSerializer return NewsWriteSerializer class Meta: model = NewsModel
При сохранении новой модели класса NewsItem получаю ошибку 400 Bad Request с сообщением о том, что поле author обязательно для заполнения. Пробовал определять метод validate_author для сериализатора NewsWriteSerializer, но это не дало результата.
Что делать?