django的一组可重用基类和帮助程序
django-baseclasses的Python项目详细描述
django基类是一个小的helper集和抽象基类模型 Django的课程。
安装
python ./setup.py install
或使用pip:
pip install django-baseclasses
在baseclasses.models
中提供的抽象类DateAuditModel
将模型的创建时间和上次更改时间的记录存储在 creation_date和last_updated字段,订单打开 creation_date,并提供get_next和get_prev方法 遵守命令。
BaseContentModel
扩展DateAuditModel,添加is_live和pub_date字段, 并在默认管理器上提供一个live方法,该方法只返回 具有is_live集和非未来pub_date的对象。还有命令 通过pub_date,并提供next_live和prev_live方法 只在“活动”对象中循环。
BaseImageModel
提供caption、image和sort_order字段。命令 sort_order。
BaseModelWithImages
与BaseImageModel一起使用的父模型 模型。提供primary_image属性,该属性返回第一个 相关图像对象,或None。外键的related_name 必须是“图像集”
BaseHierarchyModel
提供parent字段来创建简单的层次结构系统,即。 类别和子类别。提供get_hierarchy方法,该方法 返回树中对象的列表,从顶层到 当前。
模型字段
baseclasses.fields.ConstrainedImageField
上载时调整图像大小并覆盖原始图像。使用 max_dimensions参数来确定大小调整行为。
助手
baseclasses.util.next_or_prev_in_order
参数:(instance, prev=False, qs=None, loop=False)
从 给定queryset(假定包含实例),尊重 查询集排序。如果循环为true,则在 到达结束/开始。
baseclasses.admin.ContentModelAdminMixin
启用非活动对象的(缓存安全)管理预览。示例
@admin.register(MyModel) class MyModelAdmin(ContentModelAdminMixin, admin.ModelAdmin): ...
将请求传递给模型的livemanager方法以启用 预览:
def my_model_view(request, slug) instance = get_object_or_404(MyModel.objects.live(request), slug=slug) ...
示例:
# models.py from django.db import models from baseclasses.models import BaseContentModel, BaseModelWithImages, \ BaseImageModel class Article(BaseContentModel, BaseModelWithImages): title = models.CharField(max_length=190) text = models.TextField() class ArticleImage(BaseImageModel): article = models.ForeignKey(Article, related_name='image_set')
使用上述模型定义,您可以执行以下操作:
articles = Article.objects.live() # get queryset of all live articles article = articles[0] article.primary_image # get primary image (model instance) for the article article.next_live # get next live article