不能赋值必须是实例

2024-09-23 10:23:08 发布

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

我想插入两个表:CostItems和CostElements,CostElements将cost_item作为foreignkey from CostItems,但当我运行它时,它会显示以下错误消息:

Cannot assign "22": "CostElements.cost_item" must be a "CostItems" instance.

以下是我的代码:

在模型.py公司名称:

class CostItems(ModelAudit):
    cost_item = models.AutoField(primary_key = True, verbose_name = 'Item de costo')
    group = models.ForeignKey(Groups, verbose_name = 'Grupo')
    description = models.CharField(max_length = 100, verbose_name =' Descripcion')
    usd_value = models.IntegerField(verbose_name ='Valor en USD')
    rer = models.IntegerField(verbose_name = 'TRM')
    pesos_value = models.IntegerField(verbose_name = 'Valor en pesos')
    supplier = models.ForeignKey(Suppliers, verbose_name = 'Proveedor')
    position = models.ForeignKey(Positions, verbose_name = 'Cargo')
    observations = models.TextField(max_length = 500, verbose_name = 'Observación')
    validity_date = models.DateField(verbose_name = 'Fecha de vigencia')

class CostElements(ModelAudit):
    cost_element = models.AutoField(primary_key = True, verbose_name = 'Elemento de costo')
    cost_item = models.ForeignKey(CostItems, verbose_name = 'Item de costo')
    description = models.CharField(max_length = 100, verbose_name = 'Descripción')
    usd_value = models.IntegerField(verbose_name = 'Valor en USD')
    pesos_value = models.IntegerField(verbose_name = 'Valor en pesos')
    percent = models.IntegerField(verbose_name = 'Porcentaje de peso')

在视图.py公司名称:

^{pr2}$

22它已经在表单后创建了CostItem ID_保存。保存(force_insert=true),我不知道为什么不起作用,请帮忙!!在


Tags: nameverbosevaluemodelsdeitemvaloren
2条回答

解决了,只是去掉了表单前变量赋值的“comas”_保存。保存而且成功了。在

谢谢拉斐尔

当您使用快捷键get_object_or_404时,根据Docs,返回的对象已经是您正在使用的模型的一个实例。在本例中,CostItems对象。

这意味着您应该使用直接返回的对象。
现在您将ci.cost_item作为参数传递。然而,cost_itemCostItems模型中的一个字段。因此,您将该字段作为参数传递,而不是整个实例。

因此,Django提出了这个错误。如上所述,您应该使用CostItem的整个实例,以便使代码正常工作。在

你的代码应该是

ci= get_object_or_404(CostItems, cost_item=form_save.cost_item)
cost_element_created = CostElements.objects.create(
                            description = des,
                            percent = 100,
                            usd_value = usd,
                            pesos_value = pes,
                            cost_item = ci)

相关问题 更多 >