Some more background - If you look at lines 228 to 230 of django/db/models/fields/files.py, you'll see that the generate_filename method is overwritten by your upload_to method if you specify one.
228 self.upload_to = upload_to 229 if callable(upload_to): 230 self.generate_filename = upload_to On 9 December 2010 15:43, Sam Lai <samuel....@gmail.com> wrote: > I have a custom file storage working with a specific subdir structure. > > Did you pass in a method specifying the path in the upload_to kwarg > for FileField? > > Here's my model code, where EnhancedFileSystemStorage is my custom > file storage class, and get_random_dir_name is just a helper method > that does exactly as named. > > file_storage = EnhancedFileSystemStorage(location=settings.DYNMEDIA_ROOT, > base_url=settings.DYNMEDIA_URL) > > def file_upload_to(instance, filename): > return os.path.join(get_random_dir_name(instance.file_storage.location, > filename), filename) > > file = models.FileField(upload_to=file_upload_to, storage=file_storage) > > On 9 December 2010 05:24, dmitry b <dmitry.ma...@gmail.com> wrote: >> Hi, >> >> I've written a custom Storage that uses WebDAV as its underlying >> engine. When I save a file '/foo/bar/file.ext', I want it to be saved >> under /foo/bar in the webdav filesystem. However, it seems that >> FileField overrides the directory structure: >> >> def generate_filename(self, instance, filename): >> return os.path.join(self.get_directory_name(), >> self.get_filename(filename)) >> >> where get_directory_name() is defined as >> >> def get_directory_name(self): >> return >> os.path.normpath(force_unicode(datetime.datetime.now().strftime(smart_str(self.upload_to)))) >> >> I'm not really sure why FileField finds it appropriate to impose its >> own directory structure on the underlying storage engine. But short >> of creating a custom subclass of FileField and overriding >> generate_filename and/or get_directory_name(), is there a different >> way of preserving the original file location path? >> >> >> Thanks >> Dmitry >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To post to this group, send email to django-us...@googlegroups.com. >> To unsubscribe from this group, send email to >> django-users+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/django-users?hl=en. >> >> > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.