Django的延迟外键

django-dfk的Python项目详细描述


django dfk
==


django dfk实现django的延迟外键。延迟外键在概念上与泛型外键类似,只是它们在运行时被解析为真正的外键,
并在数据库中创建适当的外键。

即使该模型没有django-dfk意识。

您应该谨慎地执行后者-将其视为类似于猴子修补的过程!

此软件包是Alpha软件,功能不完整。有关列表中的
内容,请参见TOdo部分。

django dfk与python 2.6、2.7、3.2和3.3兼容。
django dfk与django版本1.3-1.7兼容


installation
====

使用首选的python包管理器安装"django dfk"。使用``virtualenv``是
也建议::



用法
==


>>
指向一个外键
----

你的评论模型可能是这样的,在"mycomments.models"中:

你的博客系统的应用程序(当你热衷于轮子改造时,你自己也写了)。这里是"blog/model s.py`::


from dfk import point
from mycomments.models import comment


class blogpost(models.model):
title=models.charfield(max_length=100)
slug=models.slugfield()
body=models.textfield()


point(comment,"content",blogpost)

您可能需要声明一个数字
应该指向相同的"种类"对象。假设您有一个疯狂的范围爬行,并且您的
评论应用程序需要能够将图像与博客文章关联起来。所以您编辑了评论应用程序的model s.py,如下所示:


from dfk import deferredforeignkey

class comment(models.model):
commenter=models.foreignkey('auth.user')
content=deferredforeignkey(name='content')
body=models.textfield()

class image(models.model):
image=models.imagefield()
content=deferredforeignkey(name='content')

这表示注释和图像都需要指向同一类型的模型。这是通过名为"point"的函数:


"blog"应用程序中名为"content"的所有"deferred foreign key"实例都将被"blogpost"的真正外键替换。




指定其他关键字参数。除了
``name``,这将逐字传递给最终外键。


在调用``point``或``point` named```时,也可以传递任意关键字参数。
这些参数也将传递给最终外键。如果
dfk定义和名为"point"的"point"调用中都存在参数,则后者的参数将优先于
。/>
模型继承
----

在子类和基类上可以有``deferredforeignkey`
实例。唯一需要注意的是
在一个子类上重新绘制一个dfk,其中键实际上是在一个非抽象基类上定义的,这是非法的,并将引发一个"typeerror"。

失败。

要启用此过程,请将"clean-caches=false"设置为
"point"或"repoint",然后手动调用"clean-object-caches"作为
必需项::


from dfk import point
from dfk import clean-object-caches
from mycomments.models import comment

blogpost(models.model):
title=models.charfield(max_length=100)
slug=models.slugfield()
body=models.textfield()

point(comment,'content',blogpost,clean_caches=false)
clean_object_caches(comment,博客文章)



rob charlwood和ian dash

>0.0.10
==
-为django 1.7设置tox环境django
-更新了文档。

>0.0.9
==
-为django 1.6设置tox环境
-修复了django 1.6下由于对相关对象使用新的foreignobject基类而导致的重新打印问题。



0.0.8
==
-使codebase python 3兼容(3.2,3.3)(robcharlwood@gmail.com)。
-使代码库与django 1.5.4兼容(robcharlwood@gmail.com)
-新的python 3兼容的代码库已经针对django 1.5.4进行了测试(robcharlwood@gmail.com)
-按照pep8标准进行了全面整理。(robcharlwood@gmail.com)
-设置并配置用于"tox"测试库(robcharlwood@gmail.com)的"django dfk"
-添加了有关运行测试套件(robcharlwood@gmail.com)的完整文档


0.0.7
=

问题。感谢马克休斯(mark@ismgames.com)。


0.0.6
=


跟踪基类上的一个。现在
这样做是非法的;基类上的dfk应该使用基类
本身来指向。


这导致了这样的问题:如果在加载模型的初始阶段之后(重新)指向dfk,则使用延迟外键对与子模型相关的父模型进行筛选可能会失败。


0.0.4
==


-包括清单。以确保文档是打包。

>0.0.3
==
-修复打包错误


>0.0.2
=


-修复在具有使用django.db.models.subfieldbase元类的自定义字段的模型类上重新打印外键时的问题
-修复从django 1.2迁移到django.db.models.subfieldbase元类的问题1.3.

0.0.1
==


-初始版本

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

推荐PyPI第三方库


热门话题
java Eclipse内存分析器(MAT):不显示当前正在运行的进程   java Apache Velocity:转义字符不能作为关联数组键用于PHP   不截断零的java格式十进制输出   在另一个类文件中调用时返回空值的java getter   java集合获取连接   java解析json使用Gson登录系统应用程序强制关闭   java DelferredResult带有两个请求的ajax请求   java可降低功耗,同时应使用无线   java BoxLayout无法共享错误?   java如何使用计时器制作闹钟   java使用OAuth2保护RESTWeb服务:一般原则   java在一个jframe上显示多个图像和按钮