Как сделать сериализатор DRF совместимым с прописными буквами - PullRequest
3 голосов
/ 24 октября 2019

Мой босс решил перенести Rest API с * ava на Django . Предыдущий Java-парень спроектировал каждое поле базы данных в camelCase, например userName, и все данные API POST в camelCase.

Когда я реорганизовал их в DRF , я получил следующую модель. REST API также получает данные публикации в camelCase, поэтому я должен понизить данные публикации, или is_valid() вернет False.

class Useraccount(models.Model):
    username = models.CharField(db_column='userName')

Данные запроса API REST:

{
"userName": "Jenny"  # I need lower "userName" to "username"
}

Есть ли способ, позволяющий DRF быть совместимым с POST DATA в верхнем регистре? Я не хочу снижать эти userName в каждом APIView.

1 Ответ

0 голосов
/ 24 октября 2019

К сожалению, я не думаю, что есть какой-то простой способ сделать это. Однако вы можете иметь сериализатор записи, который сделает это за вас.

class WriteSerializer(serializers.ModelSerializer):
    userName = serializers.CharField(source='username', write_only=True)
    class Meta:
       model = MyModel
       fields = ['userName']

class ReadSerializer(serializers.ModelSerializer):
    class Meta:
       model = MyModel
       fields = ['username']

Я не уверен, но вы также можете сделать это в одной модели, указав вручную все поля и указав, какиеполе - write_only, и это ready_only, но это также большая работа, которую я предполагаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...