Esta es una pregunta provocada por another question de mi parte.Django Modelos abstractos versus Python simples mixins vs Python ABCs
Django proporciona Abstract base classes funcionalidad (que no son lo mismo que las clases ABC en Python?) Para que uno pueda hacer un Modelo (modelos de Django.Model) del que uno puede heredar, pero sin que el Modelo tenga una tabla real en el base de datos. Uno desencadena este comportamiento estableciendo el atributo 'abstracto' en la clase Meta del Modelo.
Ahora la pregunta: ¿por qué Django lo resuelve de esta manera? ¿Por qué la necesidad de este tipo especial de Modelo de 'clase base abstracta'? ¿Por qué no crear una mezcla de modelos simplemente heredando de la clase de objetos y mezclándolos con un modelo existente? ¿O podría esto también una tarea para Python ABCs? (Mente que no estoy muy familiarizado con las clases ABC en Python, mi ignorancia podría mostrar aquí)
(Marcando esto como la respuesta aceptada, aunque Daniel también es bueno, pero Aram se expandió un poco más en los bits arenosos) Estoy en lo correcto al entender que, al usar mixins que heredan objetos, podría declarar campos adicionales en el modelo? ¿Pero podría agregar métodos adicionales o anularlos? – hopla
Sí, las mezclas de objetos heredadas pueden declarar campos y métodos adicionales. Puede anular los métodos asegurándose de que su combinación heredada de objetos sea lo primero en la lista de clases heredadas. Sin embargo, independientemente del orden, un mixin que hereda objetos no puede anular un campo (aunque no lo va a dejar de validar si intenta hacerlo). –