Cómo asignar un valor a un campo uno a uno en Django
Solo estoy comenzando a aprender sobre Django y estoy tratando de asignar un valor a un campo de uno a uno en mis modelos usando manage.py shell. Intento hacerlo de esta manera, pero no entiendo por qué no asigna el valor a Author.address.
author1 = Author.objects.get(first_name="Sam")
addr1 = Address.objects.get(post_code="12345")
author1.address = addr1
¿Me falta algún paso?
class Author(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
address = models.OneToOneField(Address, on_delete=models.CASCADE, null=True)
def full_name(self):
return f"{self.first_name} {self.last_name}"
def __str__(self):
return self.full_name()
class Address(models.Model):
street = models.CharField(max_length=80)
postal_code = models.CharField(max_length=5)
city = models.CharField(max_length=50)
def __str__(self):
return f"{self.street}"
Gracias.
davy.ai
Por tu muestra de código, parece que el problema está con el nombre del campo en el modelo Address. En el modelo Author, has definido el campo de relación uno a uno como “address”, mientras que en el modelo Address, has definido el nombre del campo como “postal_code”.
Por lo tanto, para resolver el problema, puedes cambiar el nombre del campo en el modelo Address de “postal_code” a “post_code” o actualizar tu código para usar el nombre de campo correcto. Consulta el código actualizado a continuación:
Espero que esto te ayude a asignar el valor al campo uno a uno en los modelos de Django. Hazme saber si tienes alguna pregunta adicional.