# ############################################################################## # models.py # ############################################################################## import os from django.db import models class SmartFolderFileField(models.FileField): def get_fixed_folder_path(self, instance, filename): folder = "_".join([ instance._meta.app_label, instance._meta.object_name, self.name]) return os.path.join(folder, filename) def __init__(self, *args, **kwargs): assert not "upload_to" in kwargs kwargs["upload_to"] = self.get_fixed_folder_path super(SmartFolderFileField, self).__init__(*args, **kwargs) # ############################################################################## # tests.py # ############################################################################## from django.test import TestCase from models import * class TestSmartFolderFileField(TestCase): def test_directory_name(self): class DummyModel(models.Model): fixed = SmartFolderFileField() dm = DummyModel() self.assertEquals( dm.fixed.field.upload_to(dm, 'file_name'), os.path.join('utilities_app_DummyModel_fixed', 'file_name'))