首页
学习
活动
专区
工具
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 在字段首次被聚合、排序的时候生成。 ?

5.2K31
  • MySQL中修改一个数据库下包含有某个相同字段的所有表的字段长度

    背景 由于业务场景导致某个字段如phone_name涉及到表比较多,目前很多表都有冗余这个字段,但是前期给的字段长度只有varchar(100),不满足目前的需要了,需要把所有的表的字段长度都增大到varchar...方案 修改这些表中此字段为必填的DDL语句 SELECT concat("ALTER TABLE `",table_name,"` MODIFY COLUMN `phone_name` varchar...db_lingyejun' and column_name='phone_name' and character_maximum_length < 255 and is_nullable = 'NO'; 修改这些表中此字段可为空的...column_name='phone_name' and character_maximum_length < 255 and is_nullable = 'YES'; 本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持

    6710

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

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

    66010

    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)函数是返回str2中str1所在的位置索引,str2必须以","分割开。

    5.2K30

    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.7K40
    领券