使处理django模型更加有趣的实用程序集合。
django-modeltools的Python项目详细描述
安装
- pip install django-modeltools
包括的工具
枚举
Enum类允许您快速定义模型字段值的枚举类型。构造函数接受kwargs,其中键是“常量”的名称,值是一个包含常量值(将存储在数据库中)和标签的二元组。
用法
在models.py中:
frommodeltoolsimportEnumclassMyModel(models.Model):Color=Enum(RED=('r','Red'),GREEN=('g','Green'),BLUE=('b','Blue'),)color=models.CharField(max_length=1,choices=Color.choices())
其他地方:
m=MyModel.objects.filter(color=MyModel.Color.RED)
格式化文件名
函数format_filename提供了一种基于存储用户媒体(上载的文件)的模型属性命名用户媒体的简单方法。
使用量
在models.py中:
frommodeltoolsimportformat_filenameas_ffclassPerson(models.Model):first_name=models.CharField(max_length=50)last_name=models.CharField(max_length=50)middle_name=models.CharField(max_length=50)avatar=models.ImageField(upload_to=_ff('avatars/{last_name}_{first_name}'))
在上面的示例中,{first_name}和{last_name}将替换为Person实例中的相应值。上载的文件将自动保留其原始扩展名。
upload_to=_ff('avatars/{last_name}_{first_name}/{__filename}.thumbnail{__ext}')
{__filename}和{__ext}允许访问上载文件时使用的名称和扩展名。
默认情况下,格式化模式中使用的属性将转换为小写,去掉非单词字符,并将其空格替换为下划线。(此行为可以通过向format_filename函数提供额外参数来更改。)格式化字符串的其余部分将不受影响。