Привет, я хочу десериализовать только используя 1 поле. Однако я хочу сериализовать его как объект в зависимости от модели.
Предположим, у меня есть:
#models.py
class Product(models.Model):
name = models.CharField()
amount = models.IntegerField()
description = models.TextField()
class Query(models.Model):
name = models.CharField()
product = models.ForeignKey(Product)
...
#serializers.py
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = '__all__'
class QuerySerializer(serializers.ModelSerializer):
product = ProductSerializer()
class Meta:
model = Query
fields = '__all__'
Я хочу POST / десериализовать что-то подобное на QuerySerializer:
{
"name": "Query 1",
"product": "Banana",
...
}
и я хочу что-то подобное взамен сериализатора:
{
"name": "Query 1",
"product": {
"name": "Banana",
"amount": 1,
"description": "Banana description"
}
...
}
Я знаю, что способ переопределяет to_internal_value
, но мне это не нравится, поскольку он портится с ошибками ValidationErrrors.
Я также получаю это в результате:
{'product': {'non_field_errors':
['Invalid data. Expected a dictionary, but got str.']}}