Настройте свои модели, чтобы иметь основную модель и вспомогательные модели, которые имеют внешние ключи к основной модели:
class DownloadItem(models.Model):
name = models.CharField( etc etc)
... other attributes here ...
class DownloadItemFile(models.Model):
parent = models.ForeignKey('DownloadItem', related_name="versions")
version = models.CharField( etc etc)
file = models.FileField(upload='path/to/uploaddir/')
затем, когда у вас есть экземпляр вашей модели DownloadItem, вы можете получить различные версии файлов с помощью:
mydownloaditem.versions.all()
Чтобы иметь возможность добавлять файлы через администратора, вам нужно будет использовать встроенный. В ваш admin.py для рассматриваемого приложения вам нужно добавить что-то вроде:
class DownloadItemFileInline(admin.TabularInline):
model = DownloadItemFile
class DownloadItemAdminOptions(admin.ModelAdmin):
inlines = [ DownloadItemFileInline, ]
...other admin options here...
admin.site.register(DownloadItem, DownloadItem AdminOptions)