2017-02-03 4 views
0

私はここジャンゴ重複キーエラー

(1062年、「重複エントリー 『2』キー 『building_id』の」)

でフォローエラーをされて取得していますモデルは、主キーがなぜこの仕事を文句を言わないではない私は、単一の建物と建物のフィールドに複数のエントリを追加しようとしています

class BuildingProgressComments(models.Model): 

    user = models.ForeignKey(User) 
    building = models.OneToOneField('Building') 
    date_created = models.DateTimeField(auto_now_add=True) 
    comment = models.TextField(blank=True, null=True) 

    class Meta: 
     verbose_name='Building progress notes' 
    def __unicode__(self): 
     return unicode(self.building) 

どのように見えますか?あなたが「building_id」の複数のエントリを作成することはできませんどの「OneToOneField」を使用しているため、エラーが発生した事前

+0

をクリックして詳細を知るためにこのエラー? –

+0

OneToOneFieldのために同じ建物の新しいレコードを挿入しようとしたとき –

+0

OneToOneFieldのためにフィールドをforiegnキーに変更する –

答えて

2

感謝。

Check out - Django Documentation - OneToOne fields

あなたは「ユーザー」欄に使用と同じように同じ「building_id」で複数のエントリを作成するには「のForeignKey」フィールドを使用します。ここで

は、それがどのように見えるべきかです:

class BuildingProgressComments(models.Model): 

    user = models.ForeignKey(User) 
    building = models.ForeignKey('Building') 
    date_created = models.DateTimeField(auto_now_add=True) 
    comment = models.TextField(blank=True, null=True) 

    class Meta: 
     verbose_name='Building progress notes' 
    def __unicode__(self): 
     return unicode(self.building) 
+1

Django 2.0では、 'on_delete'引数を指定する必要がありますが、 ForeignKey'。 –

+0

これは今働きましたが、私はそれが何か単純なことが分かっていたはずです。 +1 –

0

あなたはOneToOneFieldに複数のエントリを挿入しようとしています。その名前のように、このタイプのフィールドには1つのエントリしか持てません。代わりにForeignKeyを使用してください。

+0

答えをいただきありがとうございます –

0

これを試してみてください: あなたのコードを変更するには:

building = models.ForeignKey('Building') 

Helful先端に

building = models.OneToOneField('Building') 

から

を:あなたが得るん場合は、ここでOneToOneField