2017-06-04 8 views
0

私ははpostgressデータベースを使用して、私はそれを実行したとき、私はこのエラーを取得する私の生産システムに移行を実行しています許可されていませんデータベース。一つCreativeUser間の一対多の関係を表現するのForeignKeyするDjangoのはpostgress複数の主キーがエラー

class Experience (models.Model): 
    title = models.CharField(max_length = 60) 
    company = models.CharField(max_length = 60) 
    city = models.CharField(max_length = 60) 
    start_date = models.DateField(blank=False, default=datetime.now) 
    end_date = models.DateField(blank=True, null=True) 
    description = models.CharField(max_length = 1000) 
    creative_user = ForeignKey(CreativeUserProfile, models.CASCADE) 

最初は、(私の拡張Userモデルである)フィールドcreative_userが主キーだったが、それを変更:ここでは私が働いているモデルがあります多くの仕事経験を持つ。ここで

は前とForeignKeyの

class Migration(migrations.Migration): 

    dependencies = [ 
     ('website', '0003_auto_20170510_1436'), 
    ] 

    operations = [ 
     migrations.CreateModel(
      name='Experience', 
      fields=[ 
       ('title', models.CharField(max_length=60)), 
       ('company', models.CharField(max_length=60)), 
       ('city', models.CharField(max_length=60)), 
       ('startDate', models.DateField()), 
       ('endDate', models.DateField(blank=True, null=True)), 
       ('creative_user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='website.CreativeUserProfile')), 
      ], 
     ), 
] 

これは、経験モデルの作成を表現し、そのcreative_userがモデルの主キーだったに変更を行った後の移行です。私は、これはすべてがDEVに動作しますが、はpostgress DBに移行すると、私は複数の主キーを持っていると考えて言ったように

class Migration(migrations.Migration): 

    dependencies = [ 
     ('website', '0004_experience'), 
    ] 

    operations = [ 
     migrations.AddField(
      model_name='experience', 
      name='id', 
      field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), 
      preserve_default=False, 
     ), 
     migrations.AlterField(
      model_name='experience', 
      name='creative_user', 
      field =models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='website.CreativeUserProfile'), 
    ), 
] 

:次に行った後には、ForeignKeyの移行はように見えました。私がやっている間違ったことに誰かが光を当てることはできますか?

ありがとうございました。

答えて

0

私は同じ問題があり、影響を受けるテーブルが作成された時点からすべての移行ファイルを削除してから、それを解決することができました。その後、makemigrationsを実行して移行します。

マイグレーションファイル "0004_experience"がプライマリキーとして設定された "creative_user"というoneToOneFieldを作成しました。 "creative_user"が一意ではないため、新しいユニークなフィールド(自動増分フィールド "id"をプライマリキーとして設定)の作成を呼び出すonToOneからoneToManyリレーションシップに変更しました。

最新の移行は移行前の移行に依存するため、2つの主キーで終了しました。 これらの競合する移行ファイルを削除すると、ユーザーが並べ替えられます。

関連する問題