django的models里怎么让decimalfield非负 django models.SlugField 怎么使用
django的models里怎么让decimalfield非负
django的models里怎么让decimalfield非负
charfield是对应数据库的varchar的,数据库是木有最小长度限制的。。
如果你是正常程序访问,你直接程序判断就行了,或者省事点,有个属性叫validators,是传校验方法的集合,可以研究下,加个方法进去。下面这个是具体校验的源码
校验组合部分,由默认校验 自定义校验
self.validators = self.default_validators validators
下面是具体调用部分,value显然就是录入的值
def run_validators(self, value):
if value in validators.EMPTY_VALUES:
return
errors = []
for v in self.validators:
try:
v(value)
except exceptions.ValidationError, e:
if hasattr(e, code) and e.code in self.error_messages:
message = self.error_messages[e.code]
if e.params:
message = message % e.params
errors.append(message)
else:
errors.extend(e.messages)
if errors:
raise exceptions.ValidationError(errors)
django models.SlugField 怎么使用
SlugField字段是将输入的内容中的空格都替换成‘-’之后保存
Django官方文档中关于SlugField的描述如下:
class SlugField([max_length=50, **options])
Slug 是一个新闻术语,通常是某些东西的短标签。一个slug只能包含字母、数字、下划线或者是连字符,通常用来作为短标签。通常它们是用来放在URL里的。
像CharField一样,你可以指定max_length(也请参阅该部分中的有关数据库可移植性的说明和max_length)。如果没有指定 max_length, Django将会默认长度为50。
SlugField字段的Field.db_index自动设置为True。
通常根据另一个值自动生成slug来填充到SlugField的值。你可以在admin中使用prepopulated_fields自动执行此操作。
可以重写save(),用slugfy方法转化数据后自动填充到SlugField中。简单示范如下
class test(models.Model):
    q = models.CharField(max_length=30)
    s = models.SlugField()
    def save(self, *args, **kwargs):
        self.s = slugify(self.q)
        super(test, self).save(*args, **kwargs)一般多应用于URL正则表达式中的named group,作为参数在视图和URL之间传递