我正在使用django创建应用程序下载站点。我尝试编写一个模型,管理员可以在管理页面中动态添加不同的下载内容。例如,我有一个名为foobar的软件,它有3个不同的版本:1.1,1.2,1.3。我希望用户可以使用添加按钮来管理模型,以添加下载链接和下载版本。但我不知道如何在django中这样做。
答案 0 :(得分:1)
将模型设置为具有主模型的辅助模型和辅助模型:
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)