首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使admin.TabularInline中的某个字段成为条件字段?

在admin.TabularInline中,要使某个字段成为条件字段,可以使用两种方式来实现。

第一种方式是通过重写get_formset方法,在表单集合中设置字段的条件。具体步骤如下:

  1. 在admin.TabularInline子类中重写get_formset方法。
  2. 在get_formset方法中获取表单集合,可以使用父类的get_formset方法获取。
  3. 遍历表单集合中的每个表单对象,通过设置表单对象的字段条件来实现。可以使用表单对象的fields属性来获取所有字段,并通过修改字段的widget或者其他属性来设置条件。
  4. 返回修改后的表单集合。

示例代码如下:

代码语言:txt
复制
from django.contrib import admin
from django.forms import widgets

class MyInline(admin.TabularInline):
    model = MyModel

    def get_formset(self, request, obj=None, **kwargs):
        formset = super().get_formset(request, obj, **kwargs)
        
        for form in formset.forms:
            # 设置字段条件,这里以一个名为field_name的字段为例
            if form.instance.field_name == '条件值':
                form.fields['field_name'].widget = widgets.TextInput(attrs={'readonly': 'readonly'})
        
        return formset

第二种方式是通过重写get_fields方法,在返回的字段列表中设置字段的条件。具体步骤如下:

  1. 在admin.TabularInline子类中重写get_fields方法。
  2. 在get_fields方法中获取字段列表,可以使用父类的get_fields方法获取。
  3. 遍历字段列表中的每个字段,通过修改字段的widget或者其他属性来设置条件。
  4. 返回修改后的字段列表。

示例代码如下:

代码语言:txt
复制
from django.contrib import admin
from django.forms import widgets

class MyInline(admin.TabularInline):
    model = MyModel

    def get_fields(self, request, obj=None):
        fields = super().get_fields(request, obj)
        
        # 设置字段条件,这里以一个名为field_name的字段为例
        for field_name in fields:
            if field_name == 'field_name':
                fields[field_name].widget = widgets.TextInput(attrs={'readonly': 'readonly'})
        
        return fields

以上两种方式都可以实现在admin.TabularInline中设置某个字段为条件字段,根据具体需求选择适合的方式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ElasticSearch 如何配置某个字段权重?

ElasticSearch 并发处理方式:锁和版本控制 ElasticSearch 倒排索引到底是什么?...ElasticSearch 动态映射与静态映射 ElasticSearch 四种字段类型详解 ElasticSearch 地理类型和特殊类型 ElasticSearch 23 种映射参数详解 boost...11.6 copy_to 这个属性,可以将多个字段值,复制到同一个字段。...当建立倒排索引时候,会额外增加列式存储映射。 doc_values 默认是开启,如果确定某个字段不需要排序或者不需要聚合,那么可以关闭 doc_values。...大部分字段在索引时都会生成 doc_values,除了 text。text 字段在查询时会生成一个 fielddata 数据结构,fieldata 在字段首次被聚合、排序时候生成。 ?

5K31
  • Elasticsearch 8.X 如何依据 Nested 嵌套类型某个字段进行排序?

    : 包含但不限于: 基于特定字段排序 基于Nested对象字段排序 基于特定脚本实现排序 等等........., 第一:检索返回结果; 第二:基于结果 tags 数组下字段 depth 进行排序。...字段排序分类:基于特定字段排序和基于 Nested 对象字段排序,是对整个查询结果集进行排序,这在 Elasticsearch 通常是针对顶层文档字段或者简单嵌套字段进行。...要实现开篇需求——即对每个文档 tags 列表进行排序,需要在返回结果对这些 tags 列表进行处理。...是的,就是传统数组排序脚本实现。当没有办法时候,不考虑性能时候,笨办法也是办法。 在 Elasticsearch 处理大量数据时运行复杂脚本可能会消耗较多计算资源!

    50810

    MySQL 如何查询表名包含某字段

    information_schema.tables 指数据库表(information_schema.columns 指列) table_schema 指数据库名称 table_type 指是表类型...(base table 指基本表,不包含系统表) table_name 指具体表名 如查询work_ad数据库是否存在包含”user”关键字数据表 select table_name from...如何查询表名包含某字段表 select * from systables where tabname like 'saa%' 此法只对Informix数据库有用 查询指定数据库中指定表所有字段名column_name...table_schema from information_schema.tables where table_schema = ‘test’ group by table_schema; mysql查询到包含该字段所有表名...SELECT TABLE_NAME FROM information_schema.COLUMNS WHERE COLUMN_NAME='字段名' 如:查询包含status 字段数据表名 select

    12.5K40

    Mysql 查询某个字段是否包某个字符串几种函数及对比

    在工作,有时候,我们会遇到这种需求,比如 ,批量修改某个字段数据值,这个字段又是字符串且这些字符串都包含指定特殊字符串,这个时候怎么办呢?...分析: 一:查询a表,sys_pid字段包含359950439_所有数据。 二:在字段前添加mm_xxx_ 1:查询包含359950439_所有数据怎么查询?...like语法: select 字段名称 from 表名 where 字段 like ‘%模糊keyword%’ sql语句如下: select * from a where sys_pid like... '%359950439_%'; 1.2:使用find_in_set函数 语法: select 字段名称 from 表名 where find_in_set('模糊keyword',字段); sql:...需要注意是: find_in_set函数,find_in_set(str1,str2)函数是返回str2str1所在位置索引,str2必须以","分割开。

    5K30
    领券