2015-05-28 12 views
0

Я новичок в Django rest framework serializers.Python Django rest framework Post Получить сериализатор

У меня есть этот сериализатор, который я использую для запросов GET.

class MemberChargeSerializer(serializers.ModelSerializer): 

    chargeTypeName = serializers.CharField(
     source='chargeType.memberChargeTypeName', 
     read_only=True) 
    firstName = serializers.CharField(
    source='user.first_name', 
    read_only=True) 

    lastName = serializers.CharField(
     source='user.last_name', 
     read_only=True) 

    class Meta: 
     model = MemberCharge 
     fields = ('id', 'chargeTypeName', 'firstName', 'lastName', 'amount', 
     'amountPaid', 'fullyPaid', 'date', 'void') 

Это хорошо работает. Теперь мне нужно что-то сделать для обработки запроса POST. Я не буду представлять следующие поля: id, firstName, lastName, fullyPaid в request.data. Я думал о внедрении другого сериализатора для обработки моих запросов POST. Правильно ли это? Имейте в виду, что я отправлю другие поля и не буду использовать некоторые из них.

спасибо.

ответ

3

Сериализатор может использоваться как для запроса на получение, так и для отправки. В основном это зависит от параметров полей модели.

Для использования только полей «id», «firstName», «lastName», «fullPaid» для почтового запроса ваши другие поля должны быть необязательными, тогда только вы сможете вызвать метод is_valid для сериализатора.

Например.

для других полей используйте пробел = True, который сделает поля необязательного

chargeTypeName = models.CharField(max_length=6, blank=True) 
+0

Я добавил пустой = True параметра и при попытке извлечь объект или коллекцию объектов в моем браузере я получаю это error: __init __() получил неожиданный аргумент ключевого слова 'blank' –

+0

Я ввел этот параметр в сериализатор, он должен быть в модели. Итак, важно то, как определяется модель для проверки или аннулирования данных, поступающих в сериализатор. –

+0

вы также можете добавить дополнительную выборочную проверку, переопределив функцию is_valid сериализатора – prateek

Смежные вопросы