宜居,表继承:插入d

2024-05-14 08:51:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这些桌子:

class OpeDatos(models.Model):
    id_dato = models.IntegerField(primary_key=True)
    id_usuario = models.ForeignKey(SisUsuarios, db_column='id_usuario')
    id_region = models.ForeignKey(SisRegiones, db_column='id_region')
    titulo = models.CharField(max_length=70, blank=True)
    class Meta:
        managed = False
        db_table = 'ope_datos'

class OpeProductos(OpeDatos):
    id_producto = models.IntegerField(primary_key=True)
    iddato = models.OneToOneField(OpeDatos, primary_key=True, db_column="id_dato",   parent_link=True)
    id_producto_tipo = models.ForeignKey(DefProductosTipos, db_column='id_producto_tipo')
    class Meta:
         managed = False
         db_table = 'ope_productos'

我要插入数据:

^{pr2}$

显示此消息:

/productos/add/处的值错误

无法分配任何:“OpeProductos.iddato公司“不允许空值。在

你能帮帮我吗。在


Tags: keyidtruedbmodelscolumnregionclass
2条回答

我很惊讶它没有在前一行失败:datos.save(),因为您没有为主键datos.id_dato提供值

通常在Django中,您需要使用AutoField来获得一个自动递增的主键。在

另外,您不应该在OpeProductos.iddato字段中指定primary_key=True,每个模型只能有一个主键。在

那么您看到的错误是由于datos.id_dato是{},因为您在保存datos实例之前没有为其提供任何值。在

手动创建id时,应该使用AutoField而不是IntegerField

id_dato = models.AutoField(primary_key=True)

https://docs.djangoproject.com/en/1.6/ref/models/fields/#autofield

由于您没有显式定义'datos'对象的id,因此它没有id,然后producto会抱怨,因为键不能有空值。在

AutoField应该可以解决这个问题

相关问题 更多 >

    热门问题