在admin.TabularInline中,要使某个字段成为条件字段,可以使用两种方式来实现。
第一种方式是通过重写get_formset方法,在表单集合中设置字段的条件。具体步骤如下:
示例代码如下:
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方法,在返回的字段列表中设置字段的条件。具体步骤如下:
示例代码如下:
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中设置某个字段为条件字段,根据具体需求选择适合的方式。
领取专属 10元无门槛券
手把手带您无忧上云