django - Django 验证器 TypeError int() 参数必须是字符串、类似字节的对象或数字,而不是 'DeferredAttribute
问题描述
我有这种情况:当一个modelf字段被填充时,它不能大于其他模型的字段。我写了这个验证器。
class Insumo(models.Model):
nombre = models.CharField(max_length=100)
cantidadexistencias = models.DecimalField(max_digits=50, decimal_places=3, validators=[MinValueValidator(0)])
def __str__(self):
return self.nombre + " "+str(self.cantidadexistencias)
class InsumoProduction(models.Model):
idproduction = models.ForeignKey('Production', on_delete=models.CASCADE)
idinsumo = models.ForeignKey('Insumo', on_delete=models.CASCADE)
#Validar que la cantidad usada sea maximo el numero de existencias
cantidadusada = models.DecimalField(max_digits=50, decimal_places=3,validators=[insumo_existencias])
def save(self,*args,**kwargs):
insumo = Insumo.objects.get(id = self.idinsumo_id)
insumo.cantidadexistencias -= self.cantidadusada
insumo.save()
super(InsumoProduction,self).save(*args,**kwargs)
class Meta:
constraints = [
models.UniqueConstraint(fields=["idproduction", "idinsumo"],
name='unique_insumoproduction')
]
def __str__(self):
return self.idproduction.idfinalproduct.idproduct.nombre +" "+ self.idproduction.idfinalproduct.idtaste.nombre \
+ " "+ self.idinsumo.nombre + " "+ str(self.cantidadusada) + " Fecha Produccion " + str(
self.idproduction.fechaproduccion)
这些是我的模型,我的验证器在这里:
from django.core.exceptions import ValidationError
from ubindustries.ubapi.models import models
from django.utils.translation import gettext_lazy as _
def insumo_existencias(value):
insumo = models.Insumo.objects.get(id=models.InsumoProduction.idinsumo_id)
if (insumo.cantidadexistencias < value):
raise ValidationError(
_('Error no hay existencias suficientes'),
)
我收到此错误消息:TypeError at /ubapi/insumoproduction/add/int() 参数必须是字符串、类似字节的对象或数字,而不是 'DeferredAttribute
解决方案
推荐阅读
- spring-boot - 如何更改 swagger-ui.html 默认路径
- php -
- java - 我的 MapReduce 程序出错,我想在其中收集多年来的最高温度
- powershell - 用于从 list.txt 复制文件的批处理文件/Powershell 脚本
- c# - 必须保存数组元素的位置
- python-3.x - Pandas 分析错误 AttributeError:“DataFrame”对象没有属性“profile_report”
- javascript - 在 Vue 应用程序中使用 array.filter 过滤控制 v-for 的数组适用于相等性,但不适用于 RegExp
- python - 在连接前参数中将 Azure SQL DB 的 Azure AD 令牌传递给 SQLAlchemy create_engine()
- python - 如何修复二维码图像中的遮挡块
- postgresql - 获取 AFTER TRUNCATE 触发器中受影响的行数的最简单方法是什么?