当前位置: 首页 > 面试题库 >

在管理员中添加和更改页面的不同字段

上官树
2023-03-14
问题内容

我在admin.py中有一个带有以下类的django应用程序:

class SoftwareVersionAdmin(ModelAdmin):
    fields = ("product", "version_number", "description",
      "media", "relative_url", "current_version")
    list_display = ["product", "version_number", "size",
      "current_version", "number_of_clients", "percent_of_clients"]
    list_display_links = ("version_number",)
    list_filter = ['product',]

我想将这些文件用于添加页面,但将不同的字段用于更改页面。我怎样才能做到这一点?


问题答案:

首先看一下ModelAdmin类的源代码get_formget_formsets位于中的方法django.contrib.admin.options.py。您可以覆盖这些方法,并使用kwargs获得所需的行为。例如:

class SoftwareVersionAdmin(ModelAdmin):
    def get_form(self, request, obj=None, **kwargs):
        # Proper kwargs are form, fields, exclude, formfield_callback
        if obj: # obj is not None, so this is a change page
            kwargs['exclude'] = ['foo', 'bar',]
        else: # obj is None, so this is an add page
            kwargs['fields'] = ['foo',]
        return super(SoftwareVersionAdmin, self).get_form(request, obj, **kwargs)


 类似资料:
  • 问题内容: 我想在模型的列表视图中为我的模型的“添加”按钮旁边添加一个按钮,然后创建一个视图函数,在该函数中,我将做我的工作,然后将用户重定向回列表视图。 我已经检查了如何重载管理模板,但我仍然不知道,我应该将视图函数放在哪里做我的事情,以及如何将该视图注册到管理url中。 还有关于安全性的问题。我想在admin内部执行该操作,因此如果您未登录,则无法使用它。 问题答案: 当多个应用程序提供同一资

  • 需要新增2个页面 第一个是WebContent/page/simple_role.jsp, 这是authority.jsp页面的外框 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.

  • 我改变了我的Wordpress目录结构。以下是我所拥有的: 所以我有一个包含插件和主题的内容目录。然后我有一个wordpress目录,其中包含核心WP文件,减去WP内容文件夹。 有了这个新结构,我必须用这个网址访问WP后端: 有没有办法改变它,这样我就可以像这样访问它: 我不希望wordpress在URL中。这是我需要做的htaccess更新,还是我可以在wp-config.php文件中使用的设置

  • 我想创建一个插件来批量管理帖子的自定义字段数据。我知道我可以通过在post编辑屏幕中添加元框来添加post元,并使用add_action('save_post'、'function_to_update_meta')触发添加元函数。 但我不知道如何在管理菜单页面(如自定义管理菜单)中触发add_post_meta功能。如何做到这一点? 提前感谢您!

  • 最近从Laravel 6升级到Laravel 7,我遇到的问题是,当我使用url /admin它应该重定向到管理员登录页面这也适用于管理员限制页面,如果用户没有登录。我不确定是否需要更改web.php文件或登录控制器中的路由。 登录控制器

  • 我想在portlet的管理菜单中添加另一项。例如,在外观和配置之间添加一项“组织”。有可能吗?? 然而,我在配置菜单中测试了一个新的配置页面。 所以我添加了portlet。xml: 在liferay portlet中。xml: 我的ConfigurationActionPrenalyticImpl如下所示: 但是我不知道如何正确地初始化这个页面,比如doView或doEdit中的一些内容。