Как сказал jpic, вы можете попробовать django-reversion, или
- отслеживать имена прошлых файлов в видах DB, например, в отдельной строке таблицы, в настраиваемом поле или в поле gfk.
- Глобальные файлы в сети, пока имя файла управляется.
Для второго способа, фактически для обработки всех пользовательских загрузок, лучше называть файл по заданному вами шаблону, а не использовать необработанное имя (вы также можете сохранить необработанное имя для дальнейшего использования). Для вашего случая, поскольку поле имени уникально, оно подходит в качестве базы для создания имени файла загруженных файлов, если оно редко изменяется:
import os.path
from django.hash_compat import sha_constructor
def upload_to(self, filename):
return 'nanoz_file/%s%s' % (
sha_constructor(self.name).hexdigest(), os.path.splitext(filename)[-1])
class Probe(models.Model):
name = models.CharField(max_length=200, unique=True)
nanoz_file = models.FileField(upload_to=upload_to, blank=True)
Тогда, на ваш взгляд, вы можете получить список имен всех файлов экземпляра Probe probe по
import glob
# be careful to operate directory securely
glob.glob(os.path.join(
os.path.dirname(probe.nanoz_file.path),
'%s*' % sha_constructor(probe.name).hexdigest()))