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

在Django中自定义管理表单,同时还使用自动发现

鱼渝
2023-03-14
问题内容

我想修改Django内置django.contrib.auth模块的一些小细节。具体来说,我想要一个不同的表单,该表单将用户名作为电子邮件字段(并通过电子邮件发送备用电子邮件地址。)(我宁愿不要做auth任何多余的修改-
似乎 只需要简单的表单更改即可。)

当我使用autodiscover自定义的时ModelAdminauth我最终与auth自己的管理界面发生冲突,并收到“已注册”错误。

看来我必须创建自己的管理站点,并枚举所有模型。它只有18个类,但这似乎是一个DRY问题-每次更改都需要添加到Model 添加到自定义管理站点。

或者,我是否应该编写自己的“autodiscover带有排除项”版本以实质上导入 除以下以外的* 所有admin模块? *auth


问题答案:

以上都不是。只需使用admin.site.unregister()。这是我最近在admin中的is_active上添加过滤Users的方式( nb
is_active过滤现在默认在Django核心中的User模型上;仍然在这里作为示例),所有DRY可以是:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

class MyUserAdmin(UserAdmin):
    list_filter = UserAdmin.list_filter + ('is_active',)

admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)


 类似资料:
  • 问题内容: 我尝试了各种方法来实现这一目标。 我决定不重写formfield_for_dbfield,因为它没有获得请求对象的副本,并且我希望避免对thread_locals的攻击。 我决定在ModelAdmin类中重写get_form并尝试以下操作: 当我从get_form中打印字段集或声明的字段集时,我将获得None(或在PageOptions中设置为初始值的任何值)。 为什么这不起作用,还有

  • 获取频道自定义菜单 删除频道自定义菜单 设置频道自定义菜单

  • easyopen1.4.0开始支持。 创建session 登陆成功后创建session,并返回sessionId // 自定义session @PostMapping("managedSessionLogin") public String managedSessionLogin(HttpServletRequest request) { // 假设登陆成功,创建一

  • 问题内容: 我正在使用和来处理注册和配置文件。我想在注册时为用户创建一个配置文件。我创建了一个自定义注册表格,并使用以下教程将其添加到urls.py: http://dewful.com/?p=70 本教程中的基本思想是覆盖默认注册表单以同时创建配置文件。 -在我的个人资料应用中 在中 显示该表格,我可以输入城市,但是它不会保存或在数据库中创建该条目。 问题答案: 你已经准备就绪,你已经成功构建了

  • 问题内容: 我正在扩展change_list.html,我需要输出一个在settings.py中定义的变量。 如何将特定变量传递到自定义管理模板上下文中? 问题答案:

  • Web 第三方应用开发-版本管理 起始版本 新增版本 查看历史版本 Web 第三方应用开发-版本管理 更新时间:2018-08-08 15:13:30 本章讲解:如何创建和管理应用版本。 起始版本 应用列表中点击新增应用,需要输入起始版本号: 新增版本 应用版本发布完成后,在应用列表中点击“开发”,可以进入下一个版本进入开发: 版本号:格式为X.Y.Z,每位最多 5 个字符,例如:“1.0.0”。