Django 在内联表单管理中获取实例

2024-03-06

有一个内联表单类:

class ItemColorSelectForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(ItemColorSelectForm, self).__init__(*args, **kwargs)
        #here i need current object

内联类:

class ItemColorSelectInline(generic.GenericTabularInline):
    model = ColorSelect
    extra = 1
    form = ItemColorSelectForm

管理班

class ItemAdmin(admin.ModelAdmin):
    inlines = [ItemColorInline,]

问题:如何获取当前对象ItemColorSelectForm.

print kwargs return:

{'auto_id': u'id_%s', 'prefix': u'catalog-colorselect-content_type-object_id-__prefix__', 'empty_permitted': True}

目前接受的解决方案不是线程安全的。如果您关心线程安全,则永远不要将实例分配给静态类属性。

线程安全的解决方案有:

For 姜戈 1.7 (可能是早期版本,不清楚):

from django.utils.functional import cached_property

def get_formset(self, *args, **kwargs):
    FormSet = super(InlineAdmin, self).get_formset(*args, **kwargs)

    class ProxyFormSet(FormSet):
        def __init__(self, *args, **kwargs):
            self.instance = kwargs['instance']
            super(ProxyFormSet, self).__init__(*args, **kwargs)

        @cached_property
        def forms(self):
            kwargs = {'instance': self.instance}
            forms = [self._construct_form(i, **kwargs) 
                    for i in xrange(self.total_form_count())]
            return forms
    return ProxyFormSet

As of 姜戈 >= 1.9也可以传递 form_kwargs:

def get_formset(self, *args, **kwargs):
    FormSet = super(InlineAdmin, self).get_formset(*args, **kwargs)

    class ProxyFormSet(FormSet):
        def __init__(self, *args, **kwargs):
            form_kwargs = kwargs.pop('form_kwargs', {})
            form_kwargs['instance'] = kwargs['instance']
            super(ProxyFormSet, self).__init__(
                *args, form_kwargs=form_kwargs, **kwargs)
    return ProxyFormSet

上述解决方案将使 kwarg 实例以模型形式可用:

class InlineForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(InlineForm, self).__init__(*args, **kwargs)
        print('instance', kwargs['instance'])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 在内联表单管理中获取实例 的相关文章

  • Django查询:如何过滤对象以排除列表中的id?

    如何在查询中进行过滤 以便结果排除 ID 属于列表的任何对象实例 可以说我有 object id list 1 5 345 MyObject objects filter Q time gte datetime now Q what to
  • Django Web 应用程序中的 SMTP 问题

    我被要求向使用 Django Python 框架实现的现有程序添加一个功能 此功能将允许用户单击一个按钮 该按钮将显示一个小对话框 表单以输入值 我确实编写了一些代码 显示电子邮件已发送的消息 但实际上 它没有发送 My code from
  • Django 1.7 应用程序配置导入错误:没有名为 appname.apps 的模块

    我正在尝试按照以下文档为我的一个名为 文章 的 Django 应用程序设置自定义应用程序配置https docs djangoproject com en dev ref applications https docs djangoproj
  • django 中的身份验证方法返回 None

    你好 我在 django 中做了一个简单的注册和登录页面 当想要登录时 登录视图中的身份验证方法不返回任何内容 我的身份验证应用程序 模型 py from django db import models from django contri
  • 使用 Python 和 Google App Engine 的 Cookie

    我正在 Google App Engine 上开发一个应用程序 但遇到了问题 我想向每个用户会话添加一个 cookie 以便我能够区分当前用户 我希望他们都是匿名的 因此我不需要登录 因此 我为 cookie 实现了以下代码 def cle
  • Django 中的 Rpy2 错误 - 未为“”类型的对象定义转换“py2rpy”

    我以前从未使用过 R 并且正在尝试使用 rpy2 从 python 调用 R 函数 它可以在独立的 python 终端上运行 但不能在 Django 中运行 但rpy2似乎无法将python字符串转换为r对象 我正在使用同事提供的自定义库
  • 模型元中的“可交换”是什么?

    看着艰难的 django auth 模型代码 我遇到了这段代码 class User AbstractUser class Meta AbstractUser Meta swappable AUTH USER MODEL 很明显 这和新的有
  • 第一次从按钮提交时,只有单击两次后才会打开模态框

    我有一个模式弹出窗口可以通过单击按钮打开 不幸的是 当第一次在浏览器中提交时 我只能在单击两次后才能看到弹出窗口 但是 一旦弹出窗口打开并关闭 我就可以在下一次尝试中单击一次来打开模式 如果我刷新浏览器也会发生同样的情况 这看起来很奇怪 任
  • Django 模型字段默认基于另一个模型字段

    我使用 Django Admin 构建一个管理站点 有两张表 一张是ModelA其中有数据 另一个是ModelB里面什么也没有 如果一个模型字段b b in ModelB为None 可以显示在网页上 值为ModelA的场a b 我不知道该怎
  • 在 Windows 中更新/安装 Python scikit learn 最新开发版本

    我正在尝试在 Windows 中使用 0 18 dev0 最新开发版本替换 安装我的 Python scikit learn 0 17 0 以便我可以尝试sklearn neural network MLPClassifier 阅读并尝试此
  • Django Rest Framework POST 更新(如果存在或创建)

    我是 DRF 的新手 我阅读了 API 文档 也许这是显而易见的 但我找不到一个方便的方法来做到这一点 我有一个Answer与 a 具有一对一关系的对象Question 在前端 我曾经使用 POST 方法来创建发送到的答案api answe
  • Django - 隐藏内联标签

    如何在 Django 内联中隐藏标签 当我理解正确时 您可以通过添加属性将 verbose name 设置为模型中的空字符串 verbose name 到你的领域就像 street models CharField max length 5
  • React 错误:目标容器不是 DOM 元素

    我刚刚开始使用 React 所以这可能是一个非常简单的错误 但我们开始吧 我的html代码非常简单 load staticfiles
  • 更新到 1.11:TypeError build_attrs() 最多接受 2 个参数(给定 3 个)

    我从 1 10 7 更新到 1 11 0 在查看表单时收到以下错误 我根本无法理解我的形式有什么问题 其他形式的工作方式相同 我怀疑这可能是与任何一个的相互作用select2 https github com applegrew djang
  • 错误请求 400:nginx/gunicorn

    我已经遵循了这个教程 http blog wercker com 2013 11 25 django 16 part3 html http blog wercker com 2013 11 25 django 16 part3 html我现
  • Python 2.7:支持一个端口上多个连接的流式 HTTP 服务器

    我正在寻找一个标准的Python 2 7包 提供一个同时执行的HTTP服务器流媒体同一端口号上的连接 嘿 各位版主 请停止将我的问题标记为想要以非流媒体方式提供服务的问题的重复项 例如 python 中的多线程 Web 服务器 https
  • CSS 未在 Django 项目中加载?

    我是 Django 新手 但负责该项目的前端工作 我一直在研究如何准确加载 css 文件 但我发现这些方法不起作用 这是 html 文件布局 load static
  • 动态创建类 - Python

    我需要动态创建一个类 为了更详细地讲 我需要动态创建 Django 的子类Form class 通过 动态 我打算根据用户提供的配置创建一个类 e g 我想要一个名为CommentForm这应该子类化Form class 该类应该有一个选定
  • Django + nginx + uwsgi 无法登录

    我有非常简单的登录逻辑 类似于官方 Django 解决方案 class Login FormView template name login html form class AuthenticationForm def get self a
  • django jet 中的自定义徽标

    我目前正在尝试对 django 管理面板的皮肤进行一些定制 以使其更符合我们的品牌 目前我们使用 django jet 来美化管理面板 django jet 可以自定义 css html 吗 所有评论都说我应该更改一些 html 文件 但我

随机推荐

  • 重载解引用运算符

    我试图重载取消引用运算符 但编译以下代码会导致错误 initializing cannot convert from X to int struct X void f int operator const return 5 int main
  • 在 ASP.NET 服务器端验证 Recaptcha 2(无 CAPTCHA reCAPTCHA)

    新的验证码 2 http googleonlinesecurity blogspot com 2014 12 are you robot introducing no captcha html看起来很有希望 但我没有找到在 ASP NET
  • 在 Symfony 2.0.x 中自动加载非 PSR0 库

    The Symfony 2 0 Autoloader期望它可以处理的库遵循PSR0 or PEAR自动加载文件时的标准 如果您有一个不遵循这两个标准中任何一个的旧库 在我的例子中 类文件的命名类似于 name class php 您将如何处
  • 将 ui-router 与 Bootstrap-ui 模式结合使用

    我知道这已经被讨论过很多次了 大多数文章都引用了这段代码 AngularJS 中带有自定义 URL 的模态窗口 https stackoverflow com a 21213422 1031184 但我就是不明白 我觉得这根本不是很清楚 我
  • 如何在 Zend Framework 中的布局中包含页眉和页脚?

    我想让 Zend Layout 包含 header phtml 和 footer phtml 以及 layout name phtml 我怎么做 我尝试阅读Zend Layout Zend Layout Controller Plugin
  • 如何在 android 中制作具有自定义布局的 google plus 按钮?

    我想为我的 google plus 按钮创建自定义布局 有什么想法吗 我尝试调用 google plus 按钮的 OnClickEvent 这不起作用 并且尝试更改背景图像 源代码
  • Angular module().factory() 不是 concat (gulp) 之后的函数

    试图连接 丑化我的angular应用程序使用gulp在过去的几个小时里 我将整个过程简化为简单的 concat 甚至将角度文件从 concat 过程中删除到单独的
  • 如何使用 clang-format 3.9 忽略文件或目录

    我目前正在使用 travis ci 在补丁进入 github 时检查补丁 并试图找出 clang format 3 9 是否有 因为 travis ci 目前仅支持最新的 ubuntu 14 04 在扫描时忽略整个目录或文件变化 我的 tr
  • ASP.NET Web API 的不同返回类型

    我正在尝试使用 ASP NET MVC 4 Web API 通过 HTTP 编写真正的 RESTful Web 服务 我当前面临的挑战是根据我的状态代码返回不同的返回类型 实体主体 例如 对于资源 Hammer 我有一个 NET 模型类 H
  • 在 HTML 画布上为 T 恤填充颜色并相应地更改文本颜色

    我在画布上绘制了一件 T 恤 当前正在尝试当用户在上面的菜单上选择一种颜色时填充它 此外 我希望 T 恤上的文字相应地更改 例如 如果选择黑色 则 T 恤文字颜色应为白色 这可能吗 到目前为止的代码片段 T shirt color br
  • 如何使用 python Imaging 创建新的彩色图像?

    我想创建一个新图像 背景颜色 这个工作 img Image new RGB width height red 但我想定制颜色 当我将 红色 更改为 228 150 150 时 它不起作用 你有想法这样做吗 这对我有用 请注意 颜色元组不在引
  • 如何从 numpy.ndarray 中随机选择一些非零元素?

    我已经实现了一个矩阵分解模型 比如 R U V 现在我要训练和测试这个模型 为此 给定一个稀疏矩阵 R 缺失值为零 我想首先在训练中隐藏一些非零元素 并在稍后使用这些非零元素作为测试集 如何从 numpy ndarray 中随机选择一些非零
  • 标头已发送...哪里? [复制]

    这个问题在这里已经有答案了 有人知道如何在此脚本中发送标头吗 我正在使用此脚本来验证表单 因此 它导致发送标头 因此当我在实现此脚本后尝试引导用户时 它会导致正常的 警告 无法修改标头信息 标头已发送 消息 这是脚本
  • 使用 jQuery 作为依赖项而不用 RequireJS 加载 jQuery?

    考虑以下页面 当未加载 RequireJS 时 如何使用 jQuery 作为 RequireJS 模块的依赖项 我知道jQuery 暴露了自己 https github com jquery jquery blob 861a45b8fffc
  • 如何在CSS中对齐两列文本

    我在排列一些文本时遇到一些麻烦 我需要两列 一列包含数字 一列包含文本 如下所示 1 条目一2 条目二3 条目三4 条目五5 条目六 左栏是 Georgia 右栏是 Arial 字体大小略有不同 我可以为每一行设置一个容器 div 并将数字
  • Angular 2 - 如何使用配置文件

    在 ZF2 中工作时 我们使用的配置文件可能因开发人员 生产环境和登台环境而异 它非常方便 因此我想在 Angular 2 中复制它 它在 ZF2 中的工作原理 我们有一个配置文件夹 其中的配置名为 settings local php 和
  • Django 视图内的 BeautifulSoup 导致 WSGI 超时

    由于一个奇怪的原因 当我实例化一个美丽汤Django 视图中的对象 WSGI 超时 任何帮助都是值得赞赏的 因为我把头撞在墙上几个小时 却找不到这个问题的根源 风景 def index request soup BeautifulSoup
  • 注释默认“null”值

    是否可以指定默认为 null 的注释 我想要实现的是类似可选注释属性的东西 例如 public interface Foo Config value public interface Config boolean ignoreUnknown
  • 如何启用事件以便调用 Workbook_BeforeSave

    My Workbook BeforeSave保存前未调用事件 这是我的代码 Option Explicit Private Sub Workbook BeforeSave ByVal SaveAsUI As Boolean Cancel A
  • Django 在内联表单管理中获取实例

    有一个内联表单类 class ItemColorSelectForm forms ModelForm def init self args kwargs super ItemColorSelectForm self init args kw