【发布时间】:2010-05-13 08:50:44
【问题描述】:
我正在使用 django 创建一个应用程序下载站点。我尝试编写一个模型,管理员可以在管理页面中动态添加不同的下载内容。例如我有一个名为 foobar 的软件,它有 3 个不同的版本:1.1、1.2、1.3。我希望用户可以通过使用添加按钮来管理模型,以添加带有下载版本的下载链接。但我不知道如何在 django 中执行此操作。
【问题讨论】:
我正在使用 django 创建一个应用程序下载站点。我尝试编写一个模型,管理员可以在管理页面中动态添加不同的下载内容。例如我有一个名为 foobar 的软件,它有 3 个不同的版本:1.1、1.2、1.3。我希望用户可以通过使用添加按钮来管理模型,以添加带有下载版本的下载链接。但我不知道如何在 django 中执行此操作。
【问题讨论】:
将您的模型设置为具有主模型和具有主模型外键的辅助模型:
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)
【讨论】: