我正在制作一个跟踪小型企业的网络应用程序。为此,我在应用程序中设计了两个模型。其中一个是所有存储信息,另一个是每个销售订单的信息,例如:
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类提供一个验证器,以便表单中“ 数量”的输入值不超过Storage类中相应的数量数据。我该如何实现?谢谢!
答案 0 :(得分:0)
欢迎来到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')})