Django Rest Framework - вложенная сериализация не работает

model.py

class Account(models.Model):
    name_Account= models.CharField(max_length=50, default='')
    fecha_nacimiento = models.CharField(max_length=150, default='')
    phone = models.CharField(max_length=150, default='')
    mail = models.CharField(max_length=150, default='')
    user_id = models.ForeignKey(User,on_delete=models.CASCADE)
    rol_id = models.ForeignKey(Rol,on_delete=models.CASCADE, null =True)

class Reclamo(models.Model):
    nameReclamo= models.CharField(max_length=50, default='')
    rut = models.CharField(max_length=20, default='')
    numpoliza = models.CharField(max_length=30, default='')
    detalle_diagnostico = models.CharField(max_length=200, default='')
    account_id = models.ForeignKey(Account,on_delete=models.CASCADE,null =True)
    date = models.DateField(auto_now=True)
    name_estado= models.CharField(max_length=50, default='Pendiente')
    num_claim= models.CharField(max_length=30, default=' ' ,blank = True)

serializer.py

class AccountSerializer(serializers.ModelSerializer):
    class Meta:
        model = Account
        fields = ('id', 'name_Account', 'fecha_nacimiento', 'phone', 'mail', 'user_id', 'rol_id')

class ReclamoSerializer(serializers.ModelSerializer):
    name_Account = AccountSerializer(many=False) #read_only=True no return, no error 
    class Meta:
        model = Reclamo
        fields = ('id','nameReclamo','rut','numpoliza','detalle_diagnostico','account_id','date','name_estado','num_claim', 'name_Account')  

ошибка

Получил AttributeError при попытке получить значение для поля name_Account в сериализаторе ReclamoSerializer. Поле сериализатора может иметь неправильное имя и не соответствовать какому-либо атрибуту или ключу в экземпляре Reclamo. Исходный текст исключения был таким: объект Reclamo не имеет атрибута name_Account.

Я пробовал разные примеры, но не могу вернуть то, на что надеюсь


person FcoBad    schedule 26.11.2019    source источник
comment
Проблема в том, что объект Reclamo не имеет атрибута name_Account.   -  person marxin    schedule 26.11.2019


Ответы (1)


Свойство name_Account не существует. Вы должны указать на account_id, так как это ForeignKey для модели Account.

class ReclamoSerializer(serializers.ModelSerializer):
    account_id = AccountSerializer(many=False)
    class Meta:
        model = Reclamo
        fields = ('id','nameReclamo','rut','numpoliza','detalle_diagnostico','account_id','date','name_estado','num_claim')
person Eliakin Costa    schedule 26.11.2019
comment
name_Account находится внутри, ошибка транскрипции, я изменяю выдержку кода вопроса - person FcoBad; 26.11.2019
comment
Привет, @FcoBad. Я отредактировал ответ. не могли бы вы проверить это? - person Eliakin Costa; 26.11.2019