Reputation: 33
I'm trying to perform a makemigrations
, but it errors out like this:
django.utils.topological_sort.CyclicDependencyError: Cyclic dependency in graph: (<CreateModel name='CasprAdminStatusDef', fields=[('assessment_type', <django.db.models.fields.related.OneToOneField>), ('status_name', <django.db.models.fields.CharField>)], options={'db_table': 'CAsPr_Admin_Status_Def', 'managed': False}, bases=(<class 'django.db.models.base.Model'>,), managers=[]>, {<CreateModel name='CasprAdminStatusDef', fields=[('assessment_type', <django.db.models.fields.related.OneToOneField>), ('status_name', <django.db.models.fields.CharField>)], options={'db_table': 'CAsPr_Admin_Status_Def', 'managed': False}, bases=(<class 'django.db.models.base.Model'>,), managers=[]>})
The model that is erroring out is very simple. I don't see the problem:
class CasprAdminStatusDef(models.Model):
assessment_type = models.OneToOneField('self', models.DO_NOTHING, db_column='Assessment_Type', primary_key=True, related_name='+') # Field name made lowercase.
statusid = models.ForeignKey('self', models.DO_NOTHING, db_column='StatusID') # Field name made lowercase.
status_name = models.CharField(db_column='Status_Name', max_length=50, blank=True, null=True) # Field name made lowercase.
class Meta:
managed = False
db_table = 'CAsPr_Admin_Status_Def'
unique_together = (('assessment_type', 'statusid'),)
This model was created by inspectdb
. What's going on here?
Upvotes: 0
Views: 55
Reputation: 33
It appears that I had some weird self-referencing CONSTRAINT in the table definition. That created this weird model.
I removed the CONSTRAINT, updated the model and the problem went away:
class CasprAdminStatusDef(models.Model):
assessment_type = models.CharField(db_column='Assessment_Type', max_length=5, primary_key=True)
statusid = models.IntegerField(db_column='StatusID')
status_name = models.CharField(db_column='Status_Name', max_length=50, blank=True, null=True)
class Meta:
managed = False
db_table = 'CAsPr_Admin_Status_Def'
unique_together = (('assessment_type', 'statusid'),)
Upvotes: 1