如何在django中添加模型中的动态字段?

时间:2010-05-13 08:50:44

标签: python database django

我正在使用django创建应用程序下载站点。我尝试编写一个模型,管理员可以在管理页面中动态添加不同的下载内容。例如,我有一个名为foobar的软件,它有3个不同的版本:1.1,1.2,1.3。我希望用户可以使用添加按钮来管理模型,以添加下载链接和下载版本。但我不知道如何在django中这样做。

1 个答案:

答案 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)