【发布时间】:2016-11-01 02:11:52
【问题描述】:
我在我的几个应用模型(不是全部)上使用我的自定义权限混合。
对于需要从“旧-上下文”权限合并到“新-上下文”权限的情况,我希望具有更改所有模型中相应权限引用属性的功能,这些模型是该 mixin 的子类。
我如何知道哪些模型子类化了这个权限混合以及它们具有继承的权限引用属性?
其实我想在我的 mixin 里有这样的功能:
class WorkspaceManagedMixin(models.Model):
workspace = models.ForeignKey(Workspace)
class Meta:
abstract = True
@classmethod
def merge_to(cls, from_wspace, to_wspace):
"""
Reallocating workspace's objects to other workspace.
"""
workspace_managed_models = [] # HOW TO GET THIS?
try:
with transaction.atomic():
for model in workspace_managed_models:
model.objects.filter(
workspace=from_wspace,
).update(workspace=to_wspace)
except IntegrityError as e: # or DatabaseError
raise e
子类模型可以在项目中的其他 django 应用程序中。
【问题讨论】: