django模型字段是智能的。

django-smartfields的Python项目详细描述


Documentation StatusLatest VersionCode HealthTests CoverageTravis-CI

Django模型域是智能的。

此应用程序引入了处理字段值的声明方式。可能是 当一个字段依赖于另一个字段的值时特别有用,即使 一个领域取决于它自己。一开始听起来可能没用,但是,当它转过来的时候 它是一个令人惊奇的概念,有助于编写清晰、简洁和干练的代码。

最好的描述方法是用一个简单的例子。假设有一个领域 您存储了一个自定义HTML页面,并且希望附加另一个字段 到同一个模型存储相同的页面,但是去掉了html标记,而且 您希望它在第一个字段更改其值时进行更新。一个 处理这个问题的常用方法是覆盖模型的save方法并将 所有的逻辑,对吧?如果你能给一个字段一个函数 脱衣舞和其他事情都处理好了吗?那不是很好吗, 呵呵?好吧,这是这个应用程序让你做的很多事情之一。

另一个很好的例子是django的ImageField可以更新width_field 每当图像更改时,height_field。此应用程序使用类似的概念 为了实现这个功能。但这里有一个更有力的例子 演示此应用程序的价值。假设你想让一个用户 能够以任何格式上载图像并自动添加 此图像转换为JPEG格式并缩小以适合大小为1024x768的框。在这里 是如何利用django smartfields的

fromdjango.dbimportmodelsfromsmartfieldsimportfieldsfromsmartfields.dependenciesimportFileDependencyfromsmartfields.processorsimportImageProcessorclassUser(models.Model):# ... more fields ....avatar=fields.ImageField(upload_to='avatar',dependencies=[FileDependency(attname='avatar_jpeg',processor=ImageProcessor(format='JPEG',scale={'max_width':1024,'max_height':768})),])avatar_jpeg=fields.ImageField(upload_to='avatar')# ... more fields ...

就这样。我有没有提到,当新文件 上传了?

所以,希望我说服你试试这个应用。已经满了 文档也在路上,但现在您可以查看“tests”文件夹 一些例子。

django设置

大多数功能都需要Django应用程序:

INSTALLED_APPS=['django.contrib.auth','django.contrib.sessions','django.contrib.contenttypes','django.contrib.sites','smartfields',# optional, needed for forms'crispy_forms']

其他必需设置

MIDDLEWARE=['django.contrib.sessions.middleware.SessionMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware']SITE_ID=1

依赖关系

  • Django版本>;=1.7(应该也适用于2.x)
  • Python Pillow-(可选)用于 图像转换/调整大小。和/或
  • Wand-(可选)也用于图像处理。
  • ffmpeg-(可选)用于视频转换。(可以 很容易被采用。
  • BeautifulSoup4-(可选) 对于HTML剥离
  • lxml-(可选)用于美化组。
  • django-crispy-forms-(可选)用于 ajax上传。
  • Plupload-(可选)用于ajax上传。
  • Bootstrap3-(可选)用于ajax上传。

变更日志

1.1.0

  • Dependency.async重命名为Dependency.async_。 修复#16。 谢谢@zglennie
  • 修复与Django=2.x
      的兼容性
    • 已将app_name='smartifelds'添加到urls.py文件
    • 停止在NamedTemporaryFile中使用_size_set_size()属性, 因为那些只在Django=1.x
    • 中可用

1.0.7

  • 添加了gis字段。
  • 使lxml成为htmlprocessor的默认解析器。

1.0.6

  • 添加了RenameFileProcessor

1.0.5

  • 小错误修复。

1.0.4

  • 切换到MIT许可证
  • 已将stashed_value添加到处理器。

1.0.3

  • 添加了对WandWandImageProcessor的支持。
  • 使其与Django 1.8兼容
  • 已更新编译的javascript文件。

1.0.2

  • 介绍了pre_processor
  • 使UploadTo可序列化。
  • 摆脱了自定义处理程序。
  • 小错误修复。

1.0.0

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java的单元测试测试用例库。util。列出实现   java通过超类进行序列化/反序列化   java Android获取设备语言ISO字符串   java如何打开广告的行动。移动   Eclipse IDE for(嵌入式C/C++)开发者202012:经典的深色主题深黑色背景和菜单中的文本   java使用不同的内容动态创建TableView(JavaFX)   java JAXB将多个同名节点解组   java ClassDefNotFoundException,即使类由类加载器加载(服务器上安装了多个应用程序)   java有没有办法关闭在后端生成的MqttClient线程?   html如何在网站上的java小程序中包含图像?   java无法访问已分配给超类引用的子类实例变量   java在TableViewer中双击打开对话框   列出如何创建ListNode。JAVA   java如何从文本中输出的数组中放入随机图像