2012-04-05 177 views
1

有沒有辦法將django admin inline-models從類似模型的集羣中分離出來?Django管理內聯模型定製

有點上下文:我有一個名爲Page的模型,帶有兩個內聯模型,TextBlock和GalleryContainer。我將根據頁面管理編輯器中添加的順序在模板上呈現TextBlocks和GalleryContainers。 Django缺省管理員顯示的信息如下:

django-admin display

我想它顯示爲:

  • 畫廊容器1
  • 文本塊1
  • 畫廊集裝箱2

但我不知道該怎麼做。任何建議或推動正確的方向將是一個很大的幫助。提前致謝。 (我也希望我的問題有道理......)

+0

我認爲在頁面加載後用JS移動這些塊更容易 – ilvar 2012-04-06 05:53:48

回答

0

如果你想要一個列和一個畫廊之間的關係,你的模型應該反映這一點。所以如果我理解正確:一個頁面有名稱和列。一列有文字,畫廊(可選)和訂購。

models.py:

class Page(models.Model): 
    name = models.CharField(max_length=200) 

class Gallery(models.Model): 
    name = models.CharField(max_length=200) 

class Column(models.Model): 
    page = models.ForeignKey(Page) 
    text = models.TextField() 
    gallery = models.ForeignKey(Gallery, null=True, blank=True) # Optional 
    ordering = models.IntegerField() 

    class Meta: 
     ordering = ('ordering',) 

此示例演示如何排序由IntegerField完成。如果您想訂購基礎上,他們在那裏加入的那一刻列替換

ordering = models.IntegerField() 

models.datetimeField(auto_now_add=True) 

在你admin.py:

class ColumnInline(admin.TabularInline): # or StackedInline 
    model = Column 

class PageAdmin(admin.ModelAdmin): 
    inlines = [ 
     ColumnInline, 
    ] 

注:我把你的「圖庫顯示名稱'在圖庫中顯示爲'名稱'。讓畫廊的名字只有一次更有意義。但是,如果一個畫廊位於不同名稱的更多位置,那麼您需要一個字段(例如'gallery_display_name = models.CharField(max_lenght = 200)')。

這是你的問題的答案?我希望它有幫助!