Django管理内联模型定制

Django管理内联模型定制

问题描述:

有没有办法将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

如果你想要一个列和一个画廊之间的关系,你的模型应该反映这一点。所以如果我理解正确:一个页面有名称和列。一列有文字,画廊(可选)和订购。

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)')。

这是你的问题的答案?我希望它有帮助!