要解决这个问题,你需要自定义 TabularInline
的 get_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
文件中,创建一个内联模型,并将其添加到 YourModel
的 inlines
属性中。
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
文件中,自定义 TabularInline
的 get_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。请确保将上述代码中的 YourModel
、YourModelInline
和相关字段替换为你自己的模型和字段。
抱歉,我在之前的回答中遗漏了这个关键部分。现在我将补充 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 字段,而显示你指定的其他字段。请确保将上述代码中的 YourModel
、YourModelInline
和相关字段替换为你自己的模型和字段。
声明:如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。None#python87.com