У меня проблема с созданием новых рейтингов для авто. Когда я пытаюсь отправить почтовый запрос от Почтальона, чтобы создать / добавить новый рейтинг для определенного c автомобиля, я получаю сообщение об ошибке:
The `.create()` method does not support writable nested fields by default.
Это мои модели :
class Car(models.Model):
name = models.CharField(max_length=50)
symbol = models.CharField(max_length = 5)
def __str__(self):
return self.name
class Type(models.Model):
name = models.CharField(max_length = 50)
fuel = models.CharField(max_length = 1)##1 or 2 for fuel type
car = models.ManyToManyField(Car)
def __str__(self):
return self.name
class Rating(models.Model):
rating = models.IntegerField(validators=[
MaxValueValidator(10),
MinValueValidator(0)
])
car = models.ForeignKey(Car, on_delete=models.CASCADE)
type = models.ForeignKey(Type, on_delete=models.CASCADE)
def __int__(self):
return self.rating
Мои сериализаторы:
class CarSerializer(serializers.ModelSerializer):
class Meta:
model = Car
fields = ('id','name')
class TypeSerializer(serializers.ModelSerializer):
car = CarSerializer(many=True)
class Meta:
model = Type
fields = ('id','name', 'fuel', 'car')
#depth=2
class RatingSerializer(serializers.ModelSerializer):
type = TypeSerializer()
class Meta:
model = Rating
fields = ('id','rating', 'car', 'type')
def create(self, validated_data):
type_data = validated_data.pop('type')
rating = Rating.objects.create(**validated_data)
for t_data in type_data:
Type.objects.create(rating=rating, **t_data)
return rating
Когда я пытаюсь сделать запрос на публикацию рейтинга, например:
{"rating":5, "car": 2,"type":{"id":1,"name":"OffRoad","fuel":"1","car":[{"id":2,"name":"Ford"}] } }
Я получаю:
The `.create()` method does not support writable nested fields by default.
Пожалуйста, помогите, если можете, я пытался исправить это весь день. Спасибо!