Si tengo dos modelos y uno hereda de otro y configuro la base de datos con migrar, etc. así:
class TemplateProduct(models.Model):
type = models.CharField(max_length=20)
class Product(TemplateProduct):
name = models.CharField(max_length=80)
Entonces, ¿cómo migraría la base de datos para hacer que el Producto no hereda de TemplateProduct? Digamos que solo quiero estos modelos en su lugar:
class TemplateProduct(models.Model):
type = models.CharField(max_length=20)
class Product(models.Model):
name = models.CharField(max_length=80)
Cuando intento migrar esto, obtengo el siguiente error:
django.db.utils.ProgrammingError: column "templateproduct_ptr_id" of relation "product_product" does not exist
Y luego, cuando elimino la eliminación "templateproduct_ptr_id" de la migración, aparece el siguiente error:
django.core.exceptions.FieldError: Local field u"id" in class "Product" clashes with field of similar name from base class "TemplateProduct"
Como dice el título: ¿cómo migro los cambios en Django cuando no estoy heredando un modelo?
Respuestas
0 para la respuesta № 1Así que mi solución fue eliminar ambos modelos. Entonces python manage.py makemigrations --merge
, luego agregué los modelos de la forma en que los quería, finalmente corriendo python manage.py makemigrations --merge
de nuevo para agregar los modelos de nuevo en.
Puede que esta no sea la solución más elegante pero funcionó.