处理数据库对象的公共可用性的自定义管理器。

django-publicmanager的Python项目详细描述


Django公共经理

Django PublicManager应用程序提供了一个自定义的QuerySet类和 处理数据库对象的公共可用性的管理器。班级 提供按布尔值is_public和日期筛选的public方法 基于pub_date字段。

安装

安装django publicmanager包只需要一个简单的sudo easy_install dango-publicmanager

使用量

该包仅包含两个管理器。经理GenericPublicManager 工作方式与django的默认管理器完全相同,只是它提供了 public()只返回公共可用对象的方法。运动员 管理器PublicOnlyManager默认情况下返回公共对象,而不返回 调用任何额外的方法。

很明显,您至少需要一个模型来使用其中的一个或两个 经理。经理将使用以下一个或多个字段来 确定对象是否为公共对象。

  • is_public:这必须是models.BooleanField,如果设置为 True,它将被视为公共的。
  • pub_date必须是models.DateTimeFieldmodels.DateField。这个 日期必须是过去的或等于当前时间,才能使 对象公共。
  • 您可以使用一个状态字段来保存有关公众的信息 对象的可用性。要使用它,必须提供status_attr 以及管理器的status_values属性。那status_attr 指定字段名。如果在列表中找到字段的值 status_values对象将是公共的。最常见的用法是 其特点是可以选择使用它。请参阅下面的示例。
一个对象只有在模型中存在的所有这些字段都是公有的,才是公有的。 被评估为公开的。这意味着如果is_public设置为True,但是 pub_date指向将来的某个日期将处理整个对象 不公开。

示例

下面是一个非常简单的示例,仅使用is_publicpub_date 字段:

from django.db import models
from django_publicmanager.managers import GenericPublicManager, PublicOnlyManager

class Example(models.Model):
    title = models.CharField(max_length=50)
    is_public = models.BooleanField(default=True)
    pub_date = models.DateTimeField()

    objects = GenericPublicManager()
    public = PublicOnlyManager()

现在您可以访问如下对象:

>>> Example.objects.create(title='A', is_public=True, pub_date=datetime.now())
>>> Example.objects.create(title='B', is_public=True, pub_date=datetime.now() + timedelta(1))
>>> Example.objects.create(title='C', is_public=False, pub_date=datetime.now())
>>> Example.objects.create(title='D', is_public=True, pub_date=datetime.now() - timedelta(1))
>>> Example.objects.all()
[<Example: A>, <Example: B>, <Example: C>, <Example: D>]
>>> Example.objects.public()
[<Example: A>, <Example: D>]
>>> Example.public.all()
[<Example: A>, <Example: D>]
>>> Example.objects.public()
[<Example: A>, <Example: D>]
>>> Example.objects.filter(title='A').public()
[<Example: A>]

您不必像上面那样命名字段。但是如果你用athor 姓名,您必须告诉经理新的姓名:

from django.db import models
from django_publicmanager.managers import GenericPublicManager, PublicOnlyManager

class Example(models.Model):
    title = models.CharField(max_length=50)
    online = models.BooleanField(default=True)
    available_from = models.DateTimeField()

    objects = GenericPublicManager(
        is_public_attr='online',
        pub_date_attr='available_from')
    public = PublicOnlyManager(
        is_public_attr='online',
        pub_date_attr='available_from')

最后但并非最不重要的是,使用status字段的示例:

from django.db import models
from django_publicmanager.managers import GenericPublicManager, PublicOnlyManager

class Example(models.Model):
    STATUS_CHOICES = (
        (1, 'draft'),
        (2, 'review'),
        (3, 'public'),
        (4, 'featured'),
    )

    title = models.CharField(max_length=50)
    status = models.PositiveIntegerField(choices=STATUS_CHOICES)

    objects = GenericPublicManager(
        status_attr='status',
        status_values=(3,4))
    public = PublicOnlyManager(
        status_attr='status',
        status_values=(3,4))

更改日志

0.3.0-2009年12月30日

  • python包索引的第一个版本。

0.9.1-2010年2月4日

  • 添加对django current trunk(将为1.2)的支持

0.9.2-2010年2月4日

    [LI]用^ {TT24}的克隆固定错误。它没有为公众过滤 属性。

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

推荐PyPI第三方库


热门话题
java使用键在JPanel中移动矩形   java通过查找索引快速添加整数(需要100万个添加调用),在每次添加调用后保持ArrayList排序   爪哇人身上发生了奇怪的事情   java焦点是什么意思?   java tanukisoft守护程序包装器和appassembler maven插件如何解决jar名称冲突?   为什么我的Java日志文件不工作?   JTable中的java编辑JList   java部署SWING应用程序jar文件不工作   java我可以从其他类方法执行ActionListener方法actionPerformed吗?   java当我从Excel工作表中读取inf时,无法按顺序打印文档文件中的信息   java DER输入,Javapns iOS推送通知发送方中的整数标记错误   从命令行生成时的java 安卓 linkedresources   基于java中的第二个节点读取xml的第三个节点   java Maven找不到本地依赖项   异常Java从文件中添加整数   java如何修复:当我试图打印double的值时,它会输出roundeddown的值   java我不明白为什么对于49以上的输入,比如54,在最后的第四次输出打印中会有一个<perfect square>(共10次)   java Android应用程序在onCreate之前崩溃   java为什么我不能通过将节点分配到下一个节点来从循环链表中删除节点?   java按钮键盘快捷键