如何在Django Admin中创建自定义表单

2023-04-11 00:00:00 创建 自定义 表单

在 Django Admin 中,可以使用 ModelForm 来创建自定义表单。以下是创建自定义表单的步骤:

  1. 创建一个继承自 forms.ModelForm 的表单类,在该类中设置需要自定义的表单字段。
from django import forms
from django.contrib import admin
from django.db import models


class CustomForm(forms.ModelForm):
    custom_field = forms.CharField(max_length=100)

    class Meta:
        model = models.MyModel
        fields = '__all__'
  1. 在需要自定义表单的模型的 admin 类中,设置表单类为自定义表单。
from django.contrib import admin
from django.db import models
from .forms import CustomForm


@admin.register(models.MyModel)
class MyModelAdmin(admin.ModelAdmin):
    form = CustomForm

在以上示例中,我们创建了一个自定义表单类 CustomForm,添加了一个自定义的表单字段 custom_field。然后我们在 MyModelAdmin 中设置了 form 属性为我们自定义的表单类 CustomForm

在 Django Admin 中,可以使用 ModelAdmin 类为模型类创建默认的静态表单。这些表单可以通过设置 ModelAdmin.form 属性为自定义表单类来替换。在自定义表单类中,我们可以添加自己的表单字段,然后在表单保存时进行额外的处理。

例如,我们可以在自定义表单类的 __init__ 方法中添加一些默认值:

class CustomForm(forms.ModelForm):
    custom_field = forms.CharField(max_length=100)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['custom_field'].initial = 'pidancode.com'

    class Meta:
        model = models.MyModel
        fields = '__all__'

在以上示例中,我们将自定义字段 custom_field 的默认值设置为字符串 'pidancode.com'。这样,当用户创建新实例时,该字段将已经填充了默认值。

总之,自定义表单可为模型类创建高级表单,让用户能够修改模型的所有成员,具体实现方法是创建自己的表单类,然后将其追加到 Admin 类的 form 属性中。然后,我们可以在自定义表单类中添加自己的表单字段,并在表单保存时进行额外的处理。

相关文章