title: Django: change foreignkey constraint name
body: <p>I have a mysql database that was generated by doctrine/symfony1.4 and I require a separate  django 1.4 project to reference existing tables on the same mysql database. The database is shared by many client facing UIs and cannot be migrated or copied, both symfony and django need to reference/update the same tables on the same database so that the client facing UIs are in sync. Unfortunately, doctrine was there first and created constraint names and index names between these tables and I can't find how to force django to use the same names. This causes crashes when I try to wrap these existing tables in django objects.</p>
  
  <p>Any ideas how to overwrite or force django 1.4 models to use specific foreign key constraint names as well as indexes?</p>
  
  <p>UPDATE: adding more info about the table setup and crash</p>
  
  <p><strong>doctrine schema:</strong></p>
  
  <pre><code>Feature:
      actAs: [Timestampable]
      columns:
        name: { type: string(100) }
        description: { type: string(200) }
        pivotXpos: { type: float, notnull: true }
        pivotYpos: { type: float, notnull: true }
        referenceImageUrl: { type: string(200), notnull: true }
        referenceThumbnailImageUrl: { type: string(200), notnull: true }
        bbox_minx: { type: float, notnull: true }
        bbox_miny: { type: float, notnull: true }
        bbox_maxx: { type: float, notnull: true }
        bbox_maxy: { type: float, notnull: true }
      relations:
        Curve:
          local: id
          foreign: feature_id
          cascade: [delete]
          type: many
  
  
  Curve:
      actAs: [Timestampable]
      columns:
        name: { type: string(100), notnull:true}
        feature_id: { type: bigint, notnull: true }
      relations:
        Feature: { onDelete: CASCADE, local: feature_id, foreign: id, 
                 foreignAlias: Curves }
  </code></pre>
  
  <p><strong>table sql</strong></p>
  
  <pre><code>CREATE TABLE feature (id BIGINT AUTO_INCREMENT, 
  name VARCHAR(100), description VARCHAR(200), 
  pivotxpos FLOAT(18, 2) NOT NULL, 
  pivotypos FLOAT(18, 2) NOT NULL,
  referenceimageurl VARCHAR(200) NOT NULL,
  referencethumbnailimageurl VARCHAR(200) NOT NULL, 
  bbox_minx FLOAT(18, 2) NOT NULL, 
  bbox_miny FLOAT(18, 2) NOT NULL, 
  bbox_maxx FLOAT(18, 2) NOT NULL, 
  bbox_maxy FLOAT(18, 2) NOT NULL, 
  created_at DATETIME NOT NULL, 
  updated_at DATETIME NOT NULL, 
  PRIMARY KEY(id)) ENGINE = INNODB;
  
  CREATE TABLE curve (id BIGINT AUTO_INCREMENT, 
  name VARCHAR(100) NOT NULL, 
  feature_id bigint NOT NULL, 
  created_at DATETIME NOT NULL, 
  updated_at DATETIME NOT NULL, 
  INDEX feature_id_idx (feature_id), 
  PRIMARY KEY(id)) ENGINE = INNODB;
  
  ALTER TABLE curve ADD CONSTRAINT curve_feature_id_feature_id 
  FOREIGN KEY (feature_id) REFERENCES feature(id) ON DELETE CASCADE;
  </code></pre>
  
  <p><strong>django classes:</strong></p>
  
  <pre><code>class Feature(models.Model):
  
      class Meta:
          db_table = 'feature'
  
      name = models.CharField(max_length=100)
      created_at = models.DateTimeField(auto_now_add=True)
      updated_at = models.DateTimeField(auto_now=True)
      description = models.CharField(max_length=100)
      pivotXpos = models.FloatField()
      pivotYpos = models.FloatField()
      pivotXpos = models.FloatField()
      referenceImageUrl = models.CharField(max_length=200)
      referenceThumbnailImageUrl = models.CharField(max_length=200)
      bbox_minx = models.FloatField()
      bbox_miny = models.FloatField()
      bbox_maxx = models.FloatField()
      bbox_maxy = models.FloatField()
  
      def __unicode__(self):
          return self.name;
  
  
  class Curve(models.Model):
  
      class Meta:
          db_table = 'curve'
  
      name = models.CharField(max_length=100)
      created_at = models.DateTimeField(auto_now_add=True)
      updated_at = models.DateTimeField(auto_now=True)
      feature_id = models.ForeignKey(Feature)
  
      def __unicode__(self):
          return self.name;
  </code></pre>
  
  <p><strong>the crash (inside the django shell)</strong></p>
  
  <pre><code>&gt;&gt;&gt; Curve.objects.all()
  Traceback (most recent call last):
    File "&lt;console&gt;", line 1, in &lt;module&gt;
    File "/Users/a/Documents/web/impression/djangodev/lib/python2.6/site-packages/django/db/models/query.py", line 72, in __repr__
      data = list(self[:REPR_OUTPUT_SIZE + 1])
    File "/Users/a/Documents/web/impression/djangodev/lib/python2.6/site-packages/django/db/models/query.py", line 87, in __len__
      self._result_cache.extend(self._iter)
    File "/Users/a/Documents/web/impression/djangodev/lib/python2.6/site-packages/django/db/models/query.py", line 291, in iterator
      for row in compiler.results_iter():
    File "/Users/a/Documents/web/impression/djangodev/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 763, in results_iter
      for rows in self.execute_sql(MULTI):
    File "/Users/a/Documents/web/impression/djangodev/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 818, in execute_sql
      cursor.execute(sql, params)
    File "/Users/a/Documents/web/impression/djangodev/lib/python2.6/site-packages/django/db/backends/util.py", line 40, in execute
      return self.cursor.execute(sql, params)
    File "/Users/a/Documents/web/impression/djangodev/lib/python2.6/site-packages/django/db/backends/mysql/base.py", line 114, in execute
      return self.cursor.execute(query, args)
    File "/Users/a/Documents/web/impression/djangodev/lib/python2.6/site-packages/MySQLdb/cursors.py", line 174, in execute
      self.errorhandler(self, exc, value)
    File "/Users/a/Documents/web/impression/djangodev/lib/python2.6/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
      raise errorclass, errorvalue
  DatabaseError: (1054, "Unknown column 'curve.feature_id_id' in 'field list'")
  </code></pre>