Django管理员内联模型自定义

2024-10-01 05:07:02 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以将django管理内联模型从类似集群的模型中分离出来?在

一点上下文:我有一个名为Page的模型,有两个内联模型,TextBlock和GalleryContainer。我会根据文本块和GalleryContainers在页面管理编辑器中添加的顺序在模板上呈现。默认的django管理显示如下所示:

django-admin display

我希望它显示为:

  • 画廊容器1
  • 文本块1
  • 画廊容器2

但我不知道怎么做。任何向正确方向提出的建议或建议都将是一个很大的帮助。提前谢谢。(我也希望我的问题有意义……)


Tags: django方法模型文本page集群页面编辑器
1条回答
网友
1楼 · 发布于 2024-10-01 05:07:02

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

在模型.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', )

这个例子展示了如何通过整数字段进行排序。如果要根据列的添加位置对其进行排序,请替换

^{pr2}$

models.datetimeField(auto_now_add=True)

在你的管理员py公司名称:

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

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

注意:我把你的“图库显示名称”作为“名称”放在图库中。更合理的做法是只给画廊一次名字。但是如果一个图库位于多个具有不同名称的地方,则需要一个字段(例如“gallery_display_name=模型.CharField(max_lenght=200)')在柱模型上。在

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

相关问题 更多 >