from django.db import models from django.core.files.storage import get_storage_class import json class UserStorage(models.Model): """ A user defined storage """ owner = models.ForeignKey('auth.User', on_delete=models.CASCADE, null=True, blank=True) name = models.SlugField(max_length=20, help_text="Storage tag") storage = models.CharField(max_length=255, help_text="Storage class for this instance") settings_data = models.TextField(help_text="JSON dict with key/value settings") def instance(self): return get_storage_class(self.storage)(**self.settings) @property def settings(self): return json.loads(self.settings_data)