首页
学习
活动
专区
工具
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中设置某个字段为条件字段,根据具体需求选择适合的方式。

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

相关·内容

2分18秒

IDEA中如何根据sql字段快速的创建实体类

2分4秒

SAP B1用户界面设置教程

13分40秒

040.go的结构体的匿名嵌套

1分52秒

Web网页端IM产品RainbowChat-Web的v7.0版已发布

14分30秒

Percona pt-archiver重构版--大表数据归档工具

领券