2017-02-03 130 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