En el serializador, intento mostrar los datos de la persona en Employee, pero recibo este error AttributeError cuando intento obtener un valor para las persons
de campo en el serializador EmployeeSerializer
. El campo del serializador puede tener un nombre incorrecto y no coincidir con ningún atributo o clave en la instancia del Employee
. El texto de excepción original era: el objeto 'Empleado' no tiene atributo 'personas'.
Aquí están mis modelos.py
class Person(models.Model): id = models.IntegerField(primary_key=True) name = models.CharField(max_length=50) curp = models.CharField(max_length=50) rfc = models.CharField(max_length=12) gender = models.CharField(max_length=20) class Employee(models.Model): id = models.IntegerField(primary_key=True) joining_date = models.DateField() salary = models.DecimalField(18, decimal_places=2, max_digits=50) status = models.IntegerField() person = models.ForeignKey(Person, related_name='persons', on_delete=models.CASCADE) user = models.ForeignKey(User) branch = models.ForeignKey(Branch)
Serializadores
class PersonSerializer(serializers.ModelSerializer): class Meta: model = Person fields = ('name', 'curp', 'rfc', 'gender') class EmployeeSerializer(serializers.ModelSerializer): persons = PersonSerializer(many=True) class Meta: model = Employee fields = ('persons')
Es la primera vez que trabajo en django, así que no sé cómo llamar a las teclas externas. En mi base de datos tengo la tabla Empleado con 3 claves foráneas (usuario, persona y sucursal) ¡Gracias!
En su serializador de empleados, debe cambiar el nombre de la variable de personas a persona, y supongo que dado que solo una persona estaría relacionada con el objeto de empleado, puede cambiar muchos a Falso
class EmployeeSerializer(serializers.ModelSerializer): person = PersonSerializer(many=False, ) class Meta: model = Employee fields = ('person')