django模型的物化注释
dj_mano的Python项目详细描述
django模型的具体化注释。典型的用例是跟踪 文章中的评论,或用户的贡献数。
安装
pip install dj_mano
用法
代码
使用dj_mano非常简单,您只需创建一个字段并给它添加注释 想让它保持住。
如果需要,可以对正在执行的批注应用一些筛选器,例如只计算正数 例举评论。在这种情况下,您可以提供一个函数,该函数将返回 将被注释。注意,queryset必须从持有物化对象的对象开始 注释字段。
型号
fromdjango.dbimportmodelsfromdj_manoimportMaterializedAnnotationIntegerFielddefswag_model_c():returnModelA.objects.filter(models_b__models_c__has_swag=True)classModelA(models.Model):count_b=MaterializedAnnotationIntegerField(models.Count('models_b'))count_c=MaterializedAnnotationIntegerField(models.Count('models_b__models_c'))count_swag=MaterializedAnnotationIntegerField(models.Count('models_b__models_c'),swag_model_c)classModelB(models.Model):model_a=models.ForeignKey('ModelA',related_name='models_b')classModelC(models.Model):model_b=models.ForeignKey('ModelB',related_name='models_c')has_swag=models.BooleanField(default=False)
网址.py
fromdjango.conf.urlsimportpatternsfromdj_manoimporthook_it_allhook_it_all()urlpatterns=patterns('',...)
命令
有一个命令可以简单地将所有字段同步到它们的实际值。
注意:如果要使用此命令,则必须将dj mano放入已安装的应用程序中。
./manage.py dj_mano_sync
许可证
这个库是根据wtfpl的条款授权的。请参阅随附的许可证文件。