Django Admin:向模板页面添加自定义字段

Posted

技术标签:

【中文标题】Django Admin:向模板页面添加自定义字段【英文标题】:Django Admin: add custom fields to template pages 【发布时间】:2013-12-30 05:37:41 【问题描述】:

我是 Django 新手,所以这可能是一个简单的问题。我正在尝试使用 Django 构建一个投资组合网站。我想要一个主页、投资组合页面、投资组合详细信息页面和联系页面。将有大约 20 个投资组合详细信息页面 - 项目 A、项目 B、项目 C。每个项目(投资组合详细信息页面)都有多个区域,我可以在其中输入通过 Django 管理员填充的文本。如何在管理中为每个投资组合详细信息页面(标题、项目名称、网址、描述)创建自定义字段并在页面模板中显示它们?

我很困惑,我是使用 Django 管理员中的页面部分并为每个页面添加自定义字段,还是使用这些自定义字段创建自定义应用程序?然后假设项目 B 需要一个额外的奖项字段。如何在 Django 管理员中仅为 Project B 页面添加该自定义字段?

【问题讨论】:

【参考方案1】:

您没有理由不能通过仅将它们与外键链接来将任意数量的字段添加到您的项目中。

项目/models.py

from django.db import models


class Project(models.model):
     name = models.CharField(max_length=100)


class ProjectField(models.model):
     project = models.ForeignKey(Project)
     fieldname = models.CharField(max_length=50)
     value = models.TextField(max_length=2000)

根据您的描述,听起来您想在Project 管理页面中编辑ProjectField 值。管理页面的处理方式通常是使用inlines。

作为上述模型的示例:

projects/admin.py

from projects import models
from django.contrib import admin


class ProjectFieldInline(admin.StackedInline):
    model = models.ProjectField
    extra = 0


class ProjectAdmin(admin.ModelAdmin):
    inlines = [ProjectFieldInline]


admin.site.register(models.Project, ProjectAdmin)

我不能百分百说这会满足您的要求,但我建议您试一试上面的应用程序,看看它与您想要的结果有多接近。

【讨论】:

以上是关于Django Admin:向模板页面添加自定义字段的主要内容,如果未能解决你的问题,请参考以下文章

根据值在 Admin 中自定义 Django 表单字段

向Django Admin添加键盘快捷键功能

Django admin - 在显示的用户列表中添加一个字段

Django 1.3 或更低版本的 Django Admin 中的自定义过滤器

向 admin auth 注册自定义用户模型

如何在 Django-admin 中添加自定义搜索框?