Fix drop table

This commit is contained in:
long2ice
2021-02-04 14:23:46 +08:00
parent 048e428eac
commit abfa60133f
4 changed files with 16 additions and 13 deletions

View File

@@ -34,8 +34,8 @@ class BaseDDL:
def create_table(self, model: "Type[Model]"):
return self.schema_generator._get_table_sql(model, True)["table_creation_string"]
def drop_table(self, model: "Type[Model]"):
return self._DROP_TABLE_TEMPLATE.format(table_name=model._meta.db_table)
def drop_table(self, table_name: str):
return self._DROP_TABLE_TEMPLATE.format(table_name=table_name)
def create_m2m(
self, model: "Type[Model]", field_describe: dict, reference_table_describe: dict
@@ -199,7 +199,7 @@ class BaseDDL:
table_name=db_table,
fk_name=fk_name,
db_column=db_column,
table=field_describe.get("name"),
table=reference_table_describe.get("table"),
field=reference_id,
on_delete=field_describe.get("on_delete"),
)

View File

@@ -169,12 +169,17 @@ class Migrate:
model = cls._get_model(new_model_describe.get("name").split(".")[1])
if new_model_str not in old_models.keys():
cls._add_operator(cls.add_model(cls._get_model(new_model_str)), upgrade)
cls._add_operator(cls.add_model(model), upgrade)
else:
old_model_describe = old_models.get(new_model_str)
old_unique_together = old_model_describe.get("unique_together")
new_unique_together = new_model_describe.get("unique_together")
old_unique_together = map(
lambda x: tuple(x), old_model_describe.get("unique_together")
)
new_unique_together = map(
lambda x: tuple(x), new_model_describe.get("unique_together")
)
old_pk_field = old_model_describe.get("pk_field")
new_pk_field = new_model_describe.get("pk_field")
# pk field
@@ -328,7 +333,7 @@ class Migrate:
filter(lambda x: x.get("name") == new_fk_field_name, new_fk_fields)
)
cls._add_operator(
cls._add_fk(model, fk_field, old_models.get(fk_field.get("python_type"))),
cls._add_fk(model, fk_field, new_models.get(fk_field.get("python_type"))),
upgrade,
fk_m2m=True,
)
@@ -381,15 +386,15 @@ class Migrate:
for old_model in old_models:
if old_model not in new_models.keys():
cls._add_operator(cls.remove_model(cls._get_model(old_model)), upgrade)
cls._add_operator(cls.drop_model(old_models.get(old_model).get("table")), upgrade)
@classmethod
def add_model(cls, model: Type[Model]):
return cls.ddl.create_table(model)
@classmethod
def remove_model(cls, model: Type[Model]):
return cls.ddl.drop_table(model)
def drop_model(cls, table_name: str):
return cls.ddl.drop_table(table_name)
@classmethod
def create_m2m(cls, model: Type[Model], field_describe: dict, reference_table_describe: dict):