Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django Admin中,我是否可以根据外键排列对象列表(创建标题并将对象分组到相应的标题下)?_Django - Fatal编程技术网

在Django Admin中,我是否可以根据外键排列对象列表(创建标题并将对象分组到相应的标题下)?

在Django Admin中,我是否可以根据外键排列对象列表(创建标题并将对象分组到相应的标题下)?,django,Django,我有两个模型,章节和元素。各章由要素组成 class Chapter(models.Model): title = models.CharField(max_length=100) # ... class Element(models.Model): chapter = models.ForeignKey(Chapter, on_delete=models.CASCADE, related_name="elements") # ... class Met

我有两个模型,章节和元素。各章由要素组成

class Chapter(models.Model):
    title = models.CharField(max_length=100)
    # ...

class Element(models.Model):
    chapter = models.ForeignKey(Chapter, on_delete=models.CASCADE, related_name="elements")
    # ...
    class Meta:
        ordering = ['index_number']
有许多元素,每个元素都属于一个特定的章节。
索引编号
确定元素在其章节中的位置

在Django Admin中,我是否可以自定义元素列表的显示(“选择要更改的元素”页面),以便显示标题(如“字段集”标题,但基本上是章节标题),并根据元素所属的章节对元素进行分组

所需的输出如下所示:

Chapter 1 title
--------------------------
elm1_1
elm1_2
--------------------------
Chapter 2 title
--------------------------
elm2_1
elm2_2
--------------------------
etc.

在您的
模板中
目录创建
管理员
目录,在
管理员
中使用应用程序的名称创建另一个目录最后在上次创建的目录中使用您的
模型的名称创建一个目录
,在您的情况下,它将是
元素
。最后,你应该有:

templates/admin/app_name/element/
现在要更改元素的列出方式,需要覆盖
change\u list.html
模板。您可以通过将
contrib/admin/templates/admin/change\u list.html
复制到
templates/admin/my\u app/element/
目录,然后对您的版本进行所需的更改。更多关于这个

为了简化此操作,您可能需要覆盖Django admin的默认queryset,您可以通过以下方式完成此操作:

class MyModelAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        qs = super(MyModelAdmin, self).get_queryset(request)
        #your grouping goes here

在您的
模板中
目录创建
管理员
目录,在
管理员
中使用应用程序的名称创建另一个目录最后在上次创建的目录中使用您的
模型的名称创建一个目录
,在您的情况下,它将是
元素
。最后,你应该有:

templates/admin/app_name/element/
现在要更改元素的列出方式,需要覆盖
change\u list.html
模板。您可以通过将
contrib/admin/templates/admin/change\u list.html
复制到
templates/admin/my\u app/element/
目录,然后对您的版本进行所需的更改。更多关于这个

为了简化此操作,您可能需要覆盖Django admin的默认queryset,您可以通过以下方式完成此操作:

class MyModelAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        qs = super(MyModelAdmin, self).get_queryset(request)
        #your grouping goes here

谢谢你的回复!我正在查看
change\u list.html
模板,其中有
{%result\u list cl%}
块显然负责输出包含元素的表。我如何定制该块?感谢您的回复!我正在查看
change\u list.html
模板,其中有
{%result\u list cl%}
块显然负责输出包含元素的表。如何自定义该块?