Принятие другого поля в POST в Django REST Framework - PullRequest
0 голосов
/ 09 октября 2018

Если у меня есть следующая модель Dango и сериализатор Django REST:

# model
class Attribute(models.Model):
    name = models.CharField(max_length=50)
    code = models.CharField(max_length=50)
    value = models.IntegerField(default=0)

# serializer
class AttributeSerializer(serializers.ModelSerializer):
    name = serializers.CharField()
    code = serializers.CharField()
    value = serializers.IntegerField()

    class Meta:
        model = Attribute
        fields = ('name', 'code', 'value', 'group')

Можно ли принять другое поле в течение PUT или POST для обновления модели?например, может ли он принять attribute_value и использовать это для обновления поля value?

1 Ответ

0 голосов
/ 09 октября 2018

Существует функция to_internal_value Подробнее о Документы :

Переопределите это для поддержки десериализации для операций записи.


Вы можете переопределить это так:

def to_internal_value(self, data):
    if data.get('attribute_value'):
        data['value'] = data.pop('attribute_value')
    data = super().to_internal_value(data)
    return data
...