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
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.
-- 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.
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/d26b46d1-bb73-4864-8d25-c0f6aab6a212%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment