栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何限制Django模型中数字字段的最大值?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何限制Django模型中数字字段的最大值?

在这种情况下,你可以从内置的IntegerField中“继承”并覆盖其验证逻辑。

我考虑得越多,我意识到这对于许多Django应用程序将很有用。也许可以将IntegerRangeField类型作为补丁提交,供Django开发人员考虑添加到主干。

这为我工作:

from django.db import modelsclass IntegerRangeField(models.IntegerField):    def __init__(self, verbose_name=None, name=None, min_value=None, max_value=None, **kwargs):        self.min_value, self.max_value = min_value, max_value        models.IntegerField.__init__(self, verbose_name, name, **kwargs)    def formfield(self, **kwargs):        defaults = {'min_value': self.min_value, 'max_value':self.max_value}        defaults.update(kwargs)        return super(IntegerRangeField, self).formfield(**defaults)

然后,在模型类中,你将像这样使用它(字段是放置上面代码的模块):

size = fields.IntegerRangeField(min_value=1, max_value=50)

对于一个负值和正值范围(例如振荡器范围)进行“或”操作:

size = fields.IntegerRangeField(min_value=-100, max_value=100)

真正很酷的是,如果可以使用范围运算符像这样调用它:

size = fields.IntegerRangeField(range(1, 50))

但是,这将需要更多代码,因为你可以指定“跳过”参数-range(1,50,2)-有趣的主意…



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404896.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号