2010-05-13 575 views
1

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

回答

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) 
+0

Hello stevejalim: 感谢您的回答。有用。但是当我进入管理页面时,添加“DownloadItem”,如何显示其中的版本?以及如何在DownloadItem页面中直接添加DownloadItemFile? – 2010-05-13 11:15:33

+0

我会在上面更新我的答案 - 您需要使用Inlines – 2010-05-13 12:33:32

相关问题