2017-02-03 105 views
0

我正在跟蹤誤差和Django重複鍵錯誤

(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) 

我想添加多個條目的單體建築和建築領域是不是一個主鍵,那麼爲什麼慣於這項工作?

在此先感謝

+0

當你得到這個錯誤? –

+0

當我嘗試使用同一建築物插入一條新記錄 –

+0

由於OneToOneField將該字段更改爲foriegn鍵 –

回答

2

這個錯誤是因爲你使用造成了「OneToOneField」這不會讓你一個「building_id」創建多個條目。

Check out - Django Documentation - OneToOne fields

你想用一個「ForeignKey的」字段與就像你在「用戶」字段中使用相同的「building_id」創建多個條目。

下面是它應該是什麼樣子:

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。就像它的名字所暗示的那樣,你只能擁有一個這類字段的條目。改爲使用ForeignKey

+0

感謝您的回答,它現在可以工作 –

0

試試這個: 更改代碼:

building = models.OneToOneField('Building') 

building = models.ForeignKey('Building') 

Helful溫馨提示:更多地瞭解,請點擊這裏OneToOneField