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
==
-初始版本
==
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
==
-初始版本