要解决这个问题,你需要自定义 TabularInlineget_formset 方法,以便在表单中显示你想要的字段。

这里有一个例子说明如何实现这个功能:

1.首先,在你的 admin.py 文件中,创建一个 TabularInline

from django.contrib import admin
from .models import YourModel, YourModelInline

admin.site.register(YourModel)
admin.site.register(YourModelInline)

2.然后,在 models.py 文件中,创建一个内联模型,并将其添加到 YourModelinlines 属性中。

from django.db import models
from django.contrib.admin.models import TabularInline

class YourModelInline(TabularInline):
    model = YourModel.related_model  # 这里替换为你想要显示的字段所在的模型
    fields = ('id', 'your_field')  # 这里替换为你想要显示的字段

3.接下来,在 YourModel 类中,将内联模型添加到 inlines 属性中。

from django.db import models
from django.contrib.admin.models import TabularInline

class YourModel(models.Model):
    # your fields

    inlines = [
        YourModelInline,
    ]

4.最后,在 admin.py 文件中,自定义 TabularInlineget_formset 方法,以便在表单中显示你想要的字段。

from django import forms
from django.contrib import admin
from .models import YourModel, YourModelInline

class YourModelInlineForm(forms.ModelForm):
    class Meta:
        model = YourModel.related_model  # 这里替换为你想要显示的字段所在的模型
        fields = ('your_field',)  # 这里替换为你想要显示的字段

class YourModelInline(admin.TabularInline):
    model = YourModel.related_model  # 这里替换为你想要显示的字段所在的模型
    form = YourModelInlineForm

通过以上步骤,TabularInline 应该会显示你想要的字段,而不是 ID。请确保将上述代码中的 YourModelYourModelInline 和相关字段替换为你自己的模型和字段。

抱歉,我在之前的回答中遗漏了这个关键部分。现在我将补充 get_formset 方法的内容。

YourModelInline 类中,覆盖 get_formset 方法,以便在表单中显示你想要的字段。

from django.contrib import admin
from django.contrib.admin.models import TabularInline
from .models import YourModel, YourModelInline

class YourModelInline(TabularInline):
    model = YourModel.related_model  # 这里替换为你想要显示的字段所在的模型
    fields = ('your_field',)  # 这里替换为你想要显示的字段

    def get_formset(self, request, obj=None):
        formset = super().get_formset(request, obj)
        formset.form.base_fields.remove('id')  # 移除 ID 字段
        return formset

通过覆盖 get_formset 方法,你可以实现在 TabularInline 中不显示 ID 字段,而显示你指定的其他字段。请确保将上述代码中的 YourModelYourModelInline 和相关字段替换为你自己的模型和字段。

声明:如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。None#python87.com