Hi,
Below is the model generated for one of the table from the legacy database using "inspectdb"
class Test(models.Model):
field1 = models.AutoField(db_column='Field1') # Field name made lowercase.
field2 = models.ForeignKey('Field2', models.DO_NOTHING, db_column='Field2') # Field name made lowercase.
field3 = models.CharField(db_column='Field3', max_length=200) # Field name made lowercase.
field4 = models.CharField(db_column='Field4', max_length=300, blank=True, null=True) # Field name made lowercase.
class Meta:
managed = False
db_table = 'test'
unique_together = (('field1', 'field2'),)
Table definition in MySQL:
CREATE TABLE comment (
Field1 INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Field1',
Field2 INT UNSIGNED NOT NULL COMMENT 'Field2',
Field3 VARCHAR(200) NOT NULL COMMENT 'Field3',
Field4 VARCHAR(300) DEFAULT NULL COMMENT 'Field4',
KEY ( Field2 ),
FOREIGN KEY (Field2) REFERENCES item (Field2) ON DELETE CASCADE,
PRIMARY KEY ( Field1, Field2 )
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Migrations failed with the error,
"A model can't have more than one AutoField."
AssertionError: A model can't have more than one AutoField.
Tried work around of
from compositekey import db
id = db.MultiFieldPK("field1", "field2")
Now a different error,
from django.db.models.sql.aggregates import Aggregate
ImportError: No module named aggregates
Another work around of defining a new auto_increment field as primary key but here one of the composite keys (field1) is auto_incremental causing 2 auto_increment fields in a table.
Also this needs MySQL table alter, as this is a legacy database with many tables, this is quite difficult.
Please advise me on work around, correct me if I am missing some thing here in the process.
Thanks in advance.
Ramesh.