Django 1.7 从内联表单中删除“添加”按钮

django

1个回答

写回答

小蓉包

2025-07-04 23:05

+ 关注

Django
Django

Django 1.7中,内联表单是一种方便的方式来处理与主要模型相关联的多个模型。然而,有时我们可能希望从内联表单中删除“添加”按钮,以防止用户添加额外的关联模型。本文将向您展示如何在Django 1.7中实现这一点,并提供一个案例代码来说明。

Django中,内联表单是通过InlineModelAdmin类来定义的。默认情况下,内联表单会显示一个“添加”按钮,允许用户添加新的关联模型。要删除这个按钮,我们需要自定义内联表单类,并覆盖has_add_permission方法。

首先,让我们创建一个内联表单类,命名为MyInlineForm。在这个类中,我们将覆盖has_add_permission方法并返回False,以禁用“添加”按钮。

Python

from Django import forms

from Django.contrib import admin

from Django.contrib.admin import TabularInline

class MyInlineForm(forms.ModelForm):

def has_add_permission(self, request):

return False

class MyInline(admin.TabularInline):

form = MyInlineForm

model = MyModel

在上面的代码中,我们创建了一个名为MyInlineForm的内联表单类,并覆盖了has_add_permission方法。该方法接收request参数,我们可以在这里根据需要进行自定义权限检查。在这个示例中,我们简单地返回了False,以禁用“添加”按钮。

接下来,我们将MyInlineForm类应用到我们的内联表单中。在我们的主要模型的admin.py文件中,我们可以将MyInline类添加到inlines列表中,如下所示:

Python

from Django.contrib import admin

class MyModelAdmin(admin.ModelAdmin):

inlines = [MyInline]

现在,我们的内联表单中将不再显示“添加”按钮。

案例代码:

Python

from Django import forms

from Django.contrib import admin

from Django.contrib.admin import TabularInline

class MyInlineForm(forms.ModelForm):

def has_add_permission(self, request):

return False

class MyInline(admin.TabularInline):

form = MyInlineForm

model = MyModel

class MyModelAdmin(admin.ModelAdmin):

inlines = [MyInline]

在上面的案例代码中,我们创建了一个名为MyInlineForm的内联表单类,并覆盖了has_add_permission方法。我们还创建了一个名为MyInline的内联表单,并将MyInlineForm应用到其中。最后,我们将MyInline添加到inlines列表中,以在主要模型的管理界面中显示内联表单。

通过使用以上方法,我们可以很容易地在Django 1.7中从内联表单中删除“添加”按钮。这对于需要限制用户添加额外关联模型的情况非常有用。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号