Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python DRF-设置序列化程序字段的最大值和最小值_Python_Django_Django Rest Framework - Fatal编程技术网

Python DRF-设置序列化程序字段的最大值和最小值

Python DRF-设置序列化程序字段的最大值和最小值,python,django,django-rest-framework,Python,Django,Django Rest Framework,我有一个序列化程序,需要在其中设置最小值和最大值。目前,我就是这样做的 class ProductSerializer(serializers.ModelSerializer): class Meta: model = Products extra_kwargs = { 'amount': {'min_value': 10000, 'max_value': 60000}, } 这很好,但我不想硬编码它,即我想从数据

我有一个序列化程序,需要在其中设置最小值和最大值。目前,我就是这样做的

class ProductSerializer(serializers.ModelSerializer):
    class Meta:
        model = Products
        extra_kwargs = {
            'amount': {'min_value': 10000, 'max_value': 60000},
        }
这很好,但我不想硬编码它,即我想从数据库中获取它,以防值发生变化

我有两个模型

1)
类别
中有最小值和最大值

2)
产品
,其具有作为FK的
金额
类别
。输入的金额应在
min-max
范围内

如何实现这一目标?

例如:-

任何这类的东西

extra_kwargs = {
                'amount': {'min_value': Category.min, 'max_value': Category.max},
}

也许重写
validate
方法是最好的选择。因为在那里您可以访问类别值

class ProductSerializer(serializers.ModelSerializer):
    def validate(self, data):
         category = data['category']
         amount = data['amount']
         if not (category.min_value < amount < category.max_value):
             raise serializers.ValidationError('Invalid amount blah blah blah...')

         return data

    ...
类ProductSerializer(serializers.ModelSerializer):
def验证(自身、数据):
类别=数据['category']
金额=数据[“金额”]
如果不是(类别最小值<金额<类别最大值):
引发序列化程序。ValidationError('无效金额等等…'))
返回数据
...

3.5.0版的新版本DRF解决了此问题, 现在,您可以在整数字段中使用
max\u value
min\u value

像这样

amount = serializers.IntegerField(required=False, min_value=10000, max_value=60000)

我想我不明白。是否要使用
ProductSerializer
创建新产品?但是您有多个类别,并且希望确保当有人将新产品添加到某个类别时,该产品的数量将符合此特定类别的范围?是的。这就是我的意思。这也是我要做的,请参见文档中的