2010-05-13 103 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

相關問題