有没有办法将django admin inline-models与模型聚类一起解耦?
一些上下文:我有一个名为Page的模型,它有两个内联模型,TextBlock和GalleryContainer。我会根据页面管理编辑器中添加的顺序在模板上呈现TextBlocks和GalleryContainers。默认的django-admin显示如下所示:
我希望它显示为:
但我不知道该怎么做。任何正确方向的建议或推动都将是一个很大的帮助。提前致谢。 (我也希望我的问题有道理......)
答案 0 :(得分: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)')。
这是你问题的答案吗?我希望它有所帮助!