我有这些桌子:
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公司“不允许空值。在
你能帮帮我吗。在
我很惊讶它没有在前一行失败:
datos.save()
,因为您没有为主键datos.id_dato
提供值通常在Django中,您需要使用
AutoField
来获得一个自动递增的主键。在另外,您不应该在
OpeProductos.iddato
字段中指定primary_key=True
,每个模型只能有一个主键。在那么您看到的错误是由于},因为您在保存
datos.id_dato
是{datos
实例之前没有为其提供任何值。在手动创建id时,应该使用AutoField而不是IntegerField
https://docs.djangoproject.com/en/1.6/ref/models/fields/#autofield
由于您没有显式定义'datos'对象的id,因此它没有id,然后producto会抱怨,因为键不能有空值。在
AutoField应该可以解决这个问题
相关问题 更多 >
编程相关推荐