, "" , , . , , Django 0.96, , Django 1.2 , , Django, , Django 2.0.
, Meta:
model_name = re.sub('[@.]', '_', 'some_string')
class Meta:
app_label = original_model._meta.app_label
db_table = '"' + model_name.lower() + '"'
Model, , :
attr = {'__module__': __name__, 'Meta': Meta}
local_fields = [field.name for field in original_model._meta.local_fields]
for field in original_model._meta.fields:
clone = field.clone()
if field.name in local_fields:
local_fields.remove(field.name)
else:
clone.primary_key = False
if not isinstance(field, (db_models.AutoField, db_models.OneToOneField, db_models.ManyToManyField)):
attr[field.name] = clone
new_model = type(model_name, (db_models.Model,), attr)
, . :
from django.db import connection
with connection.schema_editor() as schema_editor:
schema_editor.create_model(new_model)