2016-07-26 11 views
0

私は9つのテーブルを持つMySQLデータベースを持っています。それらはすべて何らかの形で関連していますが、私は外部キーと接続できることに問題があります。Django外部キーとして動作するプライマリキー

class Release(models.Model): 
    release_ID = models.CharField(max_length=25, primary_key =True) 
    releaseversion = models.CharField(max_length=25) 
    model_ID = models.ForeignKey(Model, on_delete=models.CASCADE) #comes from Model class 

class Subrelease(models.Model): 
    subrelease_ID = models.CharField(max_length=25) 
    release_ID = models.ForeignKey('Release', blank =True) #comes from Release class 
    subreleaseversion = models.CharField(max_length=25) 

がどのようにRELEASE_IDもForeignKeyのRELEASE_IDことであるクラスリリースからの主キーを、になるだろう:私はPythonのmanage.pyの移行しようとすると、例えば、ここで私はエラーを取得しています私のテーブルのうちの2つをありますクラスのサブリリースでは?どんな助けでも大歓迎です。ありがとうございました。

私はCMDでこれを取得する移行を実行した後: django.db.utils.InternalError:(1829年には、「列 『ID』を削除できません:外部キー制約に必要な 『とapp_subrel_release_ID_id_8e08450_fk_app_release_id』テーブルの 『db.app_subrelease』 ")

更新日: いいですか?いいですか?私はDBに移行する際にエラーはありませんか?

class Release(models.Model): 
    #release_ID = models.CharField(max_length=25, primary_key =True)THIS WILL BE OUR PRIMARY KEY MADE BY DJANGO 
    releaseversion = models.CharField(max_length=25) 
    model = models.ForeignKey(Model, on_delete=models.CASCADE) #comes from Model class model_ID 



class Subrelease(models.Model): 
    #subrelease_ID = models.CharField(max_length=25) THIS WILL BE OUR PRIMARY KEY MADE BY DJANGO 
    release = models.ForeignKey(Release, on_delete=models.CASCADE) #comes from Release class release_ID 
    subreleaseversion = models.CharField(max_length=25) 
+1

"エラー" あなたは外部キーを作成したら、次のように

class B(models.Model): name = models.ForeignKeyField(A, to_field="name", db_column="name") 

は、あなたが値および関連インスタンスにアクセスすることができますか?共有は思いやりです。 –

+0

インデントを正しくフォーマットできますか?何のエラー?トレースバック?また、私はあなたがブランクを望んでいないと思う=外来キーとして真実 –

+0

おっと、申し訳ありません、私はエラーを投稿するのを忘れました。知らせてくれてありがとうございます。私は私の質問を更新しました。 – Carbon

答えて

1

あなたはto_fielddb_columnオプションを使用することを試みることができます。

>>> b = B.objects.get(id=1) 
>>> b.name_id # the value stored in the 'name' database column 
>>> b.name # the related 'A' instance 

参照: this answer

+0

私はこれを試しましたが、このエラーが発生します:AttributeError: 'module'オブジェクトに 'ForeignKeyField'属性がありません – Carbon

+0

そうです。 – moshemeirelles

関連する問題