Как использовать валидатор в Django в зависимости от данных базы данных? - PullRequest
0 голосов
/ 12 декабря 2018

Я делаю веб-приложение, которое отслеживает малый бизнес.Для этого у меня есть две модели, разработанные в моем приложении.Один из них - вся информация о хранении, а другой - для каждого ордера на продажу, например:

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 'из формы не превышает соответствующее количество данных в классе хранения.Как я могу этого достичь?Спасибо!

1 Ответ

0 голосов
/ 13 декабря 2018

добро пожаловать в 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')})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...