2011-03-21 77 views
2

我問了一些關於Django在previous question中的繼承問題。現在我正試圖弄清楚如何讓管理界面使用它。Django Admin根據類的類型更改內聯管理員表單

如果我有一些模型是這樣的:

class ContentItem(models.Model): 
    title = models.CharField(max_length=1000) 
    page_order = models.IntegerField() 
    last_update_date = models.DateTimeField(default=datetime.now()) 

    class Meta: 
     abstract = True 
     ordering = ['page_order', 'last_update_date', 'title'] 

class LinkContent(ContentItem): 
    url = models.URLField() 
    link_text = models.CharField(max_lenth=1000) 

class TextContent(ContentItem): 
text = models.CharField() 


class VideoContent(ContentItem): 
     title = models.CharField() 
     video_file = models.FieldField(upload_to = 'videos') 

class Page(models.Model): 
    contents = models.ManyToManyField(ContentItem) 
    title = models.CharField() 

假設我使用的Django模型utils的是在上一個問題的答案提及。

我將如何使管理界面顯示基於子類的正確內聯?我想要正確的內聯顯示類型。所以如果我有三項內容,一些文字,一個鏈接和一個視頻。然後,當我在管理界面中查看該內容時,我想查看每個項目的內聯表單。

這是如何完成的?

另外,我將如何處理添加新的東西到關係?理想情況下,當用戶想要添加新的ContentItem時,會詢問他們需要添加什麼樣的內容項目。然後,該內容類型的添加表單將在彈出窗口中打開。所以如果我指定我想添加VideoContent,那麼我會彈出一個讓我上傳視頻的彈出窗口。如果我指定我想要TextContent我會彈出一個輸入文本的位置。

對於Page模型的變化形式,似乎需要特別考慮。有關如何處理此問題的任何建議?

回答

1

所以事實證明,如果你使用django-model-utils並進行繼承。然後,您可以爲每個子類添加內聯。 Django管理員將解決它。它將顯示課堂的正確形式。

問題解決。

+0

很好學習方便的Django模塊。那裏有一些有用的幫手。 – 2015-11-20 09:33:13

+0

@GeraldKaszuba很高興這對你很有幫助。 – Jon 2015-11-23 17:05:11

相關問題