我有一个班级,我跳过了id
自动生成的定义,因为Django会为你做这个。
当我实例化myClass
并保存记录时,我有这个:
instance = Cotization(value1, value2, value3, value4, value5)
instance.save()
它给了我一个关于值3的错误。
我看到如果不是3个值,我在开始时添加一个整数,它将被添加,起始值是ID。
我不明白我做错了什么,从管理界面我可以毫无问题地添加记录。
我得到的错误是
jango.db.utils.IntegrityError:NOT NULL约束失败: ah_cotizacion.Product,
但事情不在值中,如果我只是在开始时添加一个有效的整数,它会添加记录proprtl
编辑:我的模特
# Create your models here.
class Producto(models.Model):
nombre = models.CharField(max_length=200, unique=True)
id = models.PositiveIntegerField(primary_key=True)
umbral = models.PositiveIntegerField(default=0)
def __str__(self):
return self.nombre
class Cotizacion(models.Model):
minimo = models.FloatField()
maximo = models.FloatField()
promedio = models.FloatField()
cantidad = models.PositiveIntegerField()
Producto = models.ForeignKey(Producto)
def __str__(self):
return self.Producto.nombre
我要做的工作是:
def registrarCotizacionProducto(producto):
with open('resultados/temporal.json') as json_data:
d = json.load(json_data)
resultadoX = b.buscarObjeto(d, producto.id)
cantidad = resultadoX['cantidad']
maximo = round(resultadoX['maximo'], 2)
minimo = round(resultadoX['minimo'], 2)
promedio = round(resultadoX['promedio'], 2)
cot = Cotizacion(minimo, maximo, promedio, cantidad, producto.id)
cot.save()
答案 0 :(得分:1)
这种情况正在发生,因为ForeignKey
字段默认情况下不允许空值,但您尝试初始化Cotizacion类的实例而不引用任何Producto实例。
答案 1 :(得分:0)
您尝试使用三个参数初始化Cotization,其中此模型的定义需要五个参数。
我们还在谈论Cotization还是Producto?
更新(原始帖子更新后有关其他数据): 请查看this link。请使用下划线字符或仅使用完整对象。 "点"符号与给出完整对象相同。
cot = Cotizacion(minimo, maximo, promedio, cantidad, producto_id)
或
cot = Cotizacion(minimo, maximo, promedio, cantidad, producto)
答案 2 :(得分:0)
感谢大家的反馈和时间+努力。
在经过大量尝试错误后,我找到了解决方案
似乎即使你有一个不属于你模型的自动生成的id,你也必须通过参数传递它,就像普通的SQL一样,它可以通过传递NULL值或Python等价物来完成{{1 }}
所以,答案是
None