Django管理内联模型定制
问题描述:
有没有办法将django admin inline-models从类似模型的集群中分离出来?Django管理内联模型定制
有点上下文:我有一个名为Page的模型,带有两个内联模型,TextBlock和GalleryContainer。我将根据页面管理编辑器中添加的顺序在模板上呈现TextBlocks和GalleryContainers。 Django缺省管理员显示的信息如下:
我想它显示为:
- 画廊容器1
- 文本块1
- 画廊集装箱2
但我不知道该怎么做。任何建议或推动正确的方向将是一个很大的帮助。提前致谢。 (我也希望我的问题有道理......)
答
如果你想要一个列和一个画廊之间的关系,你的模型应该反映这一点。所以如果我理解正确:一个页面有名称和列。一列有文字,画廊(可选)和订购。
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)')。
这是你的问题的答案?我希望它有帮助!
我认为在页面加载后用JS移动这些块更容易 – ilvar 2012-04-06 05:53:48