J'utilise mon autorisation personnalisée mixin sur plusieurs modèles de mes applications (pas tous). Pour le cas où je dois fusionner de l'autorisation "ancien contexte" à l'autorisation "nouveau contexte", je veux avoir une fonction qui change l'attribut de référence d'autorisation correspondant dans tous les modèles, qui sous-classe ce mélange. Comment puis-je savoir quels modèles ont sous-classé cette autorisation et comment ils ont l'attribut de référence d'autorisation hérité?Mise à jour d'instances sous-classées de Django mixin
En fait, je veux avoir une telle fonction dans mon 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
Les modèles peuvent être sous-classé dans d'autres applications django dans le projet.