用于字段重命名的Django集成管理器
django-orm-unchained的Python项目详细描述
#django unchained
提供了重写django的默认queryset的一种更简单的方法,默认情况下,允许您在不重写所有queryset方法的情况下,访问任何queryset方法的args和kwargs。该包还提供一个
集成管理器和注入管理器,用于重新映射发送到orm的查询,或强制所有
查询包含特定约束。打开你的django应用程序!
您可以下载项目并将"client_errors"目录放入项目目录中。
将以下应用程序添加到"settings.py"文件中的项目"installed_app s"中:
``````
"unchained",
```
默认的'true`)
如果任何键的值以一个"uu"开头,则也可以动态地执行此操作,然后调用
模型的"get-field"映射器方法来获取正确的字段。
``python
来自django import model s
import uncheed
class foo(uncheed.integrationmodel):
字段映射{
"old":"new",
"blah":"那里有"
}
@classmethod
def get_field映射器(self,field):
动态返回%s%self.field_map.get(field)
`````
"unchained.injectionmodel"的行为类似,模型需要一个'injection\u map'
dict属性来告诉orm要查找什么。键表示要查找的字段或部分字段(因为它可能表示各种选项),值表示要使用的实际字段。如果该值以一个``前缀'开头,则将通过调用模型的
`get_injection_prefix`方法添加前缀。它总是调用模型上的"get_injection_value"方法来找出查询应该使用的值。
``python
class bar(unchained.injection model):
injection_map={
'search':'actual_search_field',
"部分":"你还不知道"
}
@classmethod
def get_injection_prefix(self):
返回"icoolbedynamic"
@classmethod
def get_injection_value(self,field):
如果field='搜索':
返回3
eliffield=="partial":
返回"heeeeey"
引发异常
````
或"unchained.unchainedmanager",您将需要全部替换这三个。(抱歉,这是一个django问题)。
您还可以直接将模型"objects"设置到自定义管理器,然后不需要重写模型本身。我倾向于继承自定义模型类,以免重复太多代码。但这取决于您。
``python
import unchained
class specialqueryset(unchained.unchainedqueryset)
def kwargs(self,**kwargs):
*参数:
对参数执行操作
返回参数
使用=self._db)
许可证)
版权所有(C)2011-2012 Beau Sorensen<;mail@beau sorensen.com>;
包括但不限于使用、复制、修改、合并、发布、分发、再授权和/或销售软件副本的权利,以及允许向其提供软件的人员这样做的权利,在满足以下条件的前提下:
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
包括但不限于以下保证:
适销性、特定用途的适用性和不侵权。
在任何情况下,作者或版权所有人均不对因诉讼或合同、侵权或其他原因引起的任何
索赔、损害赔偿或其他责任负责来自、脱离或与
软件有关,或使用或与软件中的其他交易有关。
提供了重写django的默认queryset的一种更简单的方法,默认情况下,允许您在不重写所有queryset方法的情况下,访问任何queryset方法的args和kwargs。该包还提供一个
集成管理器和注入管理器,用于重新映射发送到orm的查询,或强制所有
查询包含特定约束。打开你的django应用程序!
您可以下载项目并将"client_errors"目录放入项目目录中。
将以下应用程序添加到"settings.py"文件中的项目"installed_app s"中:
``````
"unchained",
```
默认的'true`)
如果任何键的值以一个"uu"开头,则也可以动态地执行此操作,然后调用
模型的"get-field"映射器方法来获取正确的字段。
``python
来自django import model s
import uncheed
class foo(uncheed.integrationmodel):
字段映射{
"old":"new",
"blah":"那里有"
}
@classmethod
def get_field映射器(self,field):
动态返回%s%self.field_map.get(field)
`````
"unchained.injectionmodel"的行为类似,模型需要一个'injection\u map'
dict属性来告诉orm要查找什么。键表示要查找的字段或部分字段(因为它可能表示各种选项),值表示要使用的实际字段。如果该值以一个``前缀'开头,则将通过调用模型的
`get_injection_prefix`方法添加前缀。它总是调用模型上的"get_injection_value"方法来找出查询应该使用的值。
``python
class bar(unchained.injection model):
injection_map={
'search':'actual_search_field',
"部分":"你还不知道"
}
@classmethod
def get_injection_prefix(self):
返回"icoolbedynamic"
@classmethod
def get_injection_value(self,field):
如果field='搜索':
返回3
eliffield=="partial":
返回"heeeeey"
引发异常
````
或"unchained.unchainedmanager",您将需要全部替换这三个。(抱歉,这是一个django问题)。
您还可以直接将模型"objects"设置到自定义管理器,然后不需要重写模型本身。我倾向于继承自定义模型类,以免重复太多代码。但这取决于您。
``python
import unchained
class specialqueryset(unchained.unchainedqueryset)
def kwargs(self,**kwargs):
*参数:
对参数执行操作
返回参数
使用=self._db)
许可证)
版权所有(C)2011-2012 Beau Sorensen<;mail@beau sorensen.com>;
包括但不限于使用、复制、修改、合并、发布、分发、再授权和/或销售软件副本的权利,以及允许向其提供软件的人员这样做的权利,在满足以下条件的前提下:
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
包括但不限于以下保证:
适销性、特定用途的适用性和不侵权。
在任何情况下,作者或版权所有人均不对因诉讼或合同、侵权或其他原因引起的任何
索赔、损害赔偿或其他责任负责来自、脱离或与
软件有关,或使用或与软件中的其他交易有关。