我問了一些關於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模型的變化形式,似乎需要特別考慮。有關如何處理此問題的任何建議?
很好學習方便的Django模塊。那裏有一些有用的幫手。 – 2015-11-20 09:33:13
@GeraldKaszuba很高興這對你很有幫助。 – Jon 2015-11-23 17:05:11