Estoy tratando de cambiar el comportamiento de un modelo de Django para permitirme acceder a las propiedades de una clave foránea directamente desde el padre, por ej.Cambiando el comportamiento de un modelo de Django con __getattr__
cache.part_number
vs
cache.product.part_number
He intentado reemplazando el método __getattr__
de la siguiente manera, pero me da un error de recursividad cuando trato de acceder a las propiedades de la clave externa
class Product(models.Model):
part_number = models.CharField(max_length=10)
...
class Cache(models.Model):
product = models.ForeignKey(Product)
...
def __getattr__(self, name):
value = getattr(self.product, name, None)
if value:
return value
else:
raise AttributeError
¿Qué estoy haciendo mal?
¿Por qué intenta reemplazar una función interna de pitón en lugar de utilizar un típico función o nombre del método? – FallenAngel