gpt4 book ai didi

python - 如何根据数据库数据在Django中使用验证器?

转载 作者:行者123 更新时间:2023-12-01 08:35:32 27 4
gpt4 key购买 nike

我正在制作一个网络应用程序来跟踪一家小型企业。为此,我在我的应用程序中设计了两个模型。其中一个是所有的存储信息,另一个是每个销售订单的存储信息,例如:

class Storage(models.Model):
name = models.CharField('product name', max_length=64)
quantity = models.DecimalField('inventory', max_digits=6, decimal_places=4, default=0)

class Orders(models.Model):
product = models.ForeignKey('Storage', on_delete=models.CASCADE)
volumn = models.DecimalField('order volumn', max_digits=6, decimal_places=4, default=0)

我想要为我的 Orders 类添加一个验证器,以便表单中“volumn”的输入值不会超过 Storage 类中相应的quantity 数据。我怎样才能做到这一点?谢谢!

最佳答案

欢迎来到 StackOverlow。这是我的第一个答案,所以如果它有效,如果您可以点击“接受为答案”,我将不胜感激

您可以为您的模型使用 clean() 方法。更多内容请参见:

https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddo#id1

from django.db import models 
from django.core.exceptions import ValidationError

class Storage(models.Model):
name = models.CharField('product name', max_length=64)
quantity = models.DecimalField('inventory', max_digits=6, decimal_places=4, default=0)

class Orders(models.Model):
product = models.ForeignKey('Storage', on_delete=models.CASCADE,related_name='storage')
volumn = models.DecimalField('order volumn', max_digits=6, decimal_places=4, default=0)

def clean(self):
# Don't allow volumn to be bigger than quantity in Storage
if self.volumn > self.product.quantity :
raise ValidationError({'volumn': ('Volumn cannot be bigger than storage quantity')})

关于python - 如何根据数据库数据在Django中使用验证器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53744209/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com