У меня есть конечная точка API, которая запрашивает данные в следующем формате: -
{
"platform": "value",
"username": "value",
"login_type": "value"
}
Теперь у меня есть модель: -
class ModelA(models.Model):
field1 = models.IntegerField()
Переменные запроса не являются частью модели, поэтому я создаю следующий сериализатор: -
class ModelASerializer(serializers.ModelSerializer):
username = serializers.CharField()
login_type = serializers.IntegerField()
platform = serializers.ChoiceField(choices=User.PLATFORM_CHOICES)
def create(self, data):
platform, username = data.get('platform'), data.get('username')
login_type = data.get('login_type')
###### some processing based on above input
instance = ModelA.objects.create(field1=11111)
return instance
class Meta:
model = ModelA
fields = ('username', 'login_type', 'platform')
read_only_fields = ('field1', )
Когда я POST
данных, ошибка возвращается обратно
The serializer field might be named incorrectly and not match any attribute or key on the `ModelA` instance.
Original exception text was: 'ModelA' object has no attribute 'username'.
Я понимаю, что он пытается get_attr
fields
из объекта экземпляра. Как отправить ответ, если запрос INPUT отличается (т. Е. Не связан с полями модели), а ответ отличается (т. Е. Связан с полями модели)?