Digamos que tengo un poco de modelo de Django que es una clase base abstracta:¿Cómo se modifican los argumentos de campo en las subclases del modelo de Django?
class Foo(models.Model):
value=models.IntegerField()
class Meta:
abstract = True
y tiene dos clases de derivados, en los que me gustaría el valor por defecto del campo a ser diferente para cada uno de las clases hijas. No puedo simplemente anular el campo
class Bar(Foo):
value=models.IntegerField(default=9)
porque Django no le permite anular los campos en subclases. He visto publicaciones sobre cómo intentar cambiar las opciones disponibles, pero en este caso me preocupa sobre todo el cambio del valor predeterminado. ¿Algún consejo?
Si fuera simplemente para definir valores por defecto para todos los elementos de la clase base, podríamos entonces simplemente reemplazar el método ahorrar para todas las clases secundarias, ¿o los valores predeterminados definidos en la clase base harán que las variables de instancia nunca estén vacías? (Es decir, si defino un valor por defecto en la clase padre, es que el valor por defecto añadió al guardar o al inicializar el objeto?) – Zxaos
Una vez más, hay que ver la herencia en Django como FK a la super-clase, por lo si la superclase tiene un campo con un valor predeterminado, el campo en la subclase también tendrá el campo con el valor predeterminado, ya que el campo no es en realidad de la subclase sino de la superclase. – juliomalegria