¿Hay alguna forma de establecer la relación de clave externa utilizando el ID de número entero de un modelo? Esto sería con fines de optimización.
Por ejemplo, supongamos que tengo un modelo de empleado:
class Employee(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
type = models.ForeignKey('EmployeeType')
y
EmployeeType(models.Model):
type = models.CharField(max_length=100)
Quiero la flexibilidad de tener tipos de empleados ilimitados, pero en la aplicación implementada probablemente habrá solo un tipo, así que me pregunto si hay una manera de codificar la identificación y establecer la relación de esta manera. De esta manera puedo evitar una llamada a la base de datos para obtener primero el objeto EmployeeType.
type
campo se escribe en la base de datos, si accede a latype
propiedad posteriormente, no refleja el cambio. Dicho en código, esto fallaríaassert(employe.type.id == 4)
.Una alternativa que usa create para crear el objeto y guardarlo en la base de datos en una línea:
fuente