Trường hợp Bảng ae_fonttype có các trường(id, name, order, font_type)
Khi hiển thị(view) cần có các trường (name, font_type, font_list) font_list: là danh sách các font có cùng font_type được lưu ở ae_fonttype_font_list
Khi thêm bản ghi mới(add) chỉ có(name, font_type)
Model(models/font_type.py):
class FontType(models.Model):
    class Meta:
        verbose_name = 'フォントタイプ'
        verbose_name_plural = 'b.1 フォントタイプ一覧'
        ordering = ['order']
    name = models.CharField(verbose_name="名前", null=True, blank=True, max_length=32)
    font_list = ManyToManyField(
        Font,
        related_name='fonttypes',
        blank=True)
    order = models.PositiveIntegerField(verbose_name="順序", default=0, blank=False, null=False)
    font_type = models.CharField(verbose_name="フォントタイプ", max_length=1, choices=Font.FONT_TYPE_CHOICES, default=Font.OTHER)
    def __str__(self):
        return self.name
Do khác biệt font_list(khi add không có) nên cần thiết kế 2 Form khác nhau (forms/font_type.py)
class FontTypeForm(ModelForm):
    class Meta:
        model = FontType
        fields = [
            'name', 'font_list', 'font_type'
            ]
    def __init__(self, *args, **kwargs):
        super(FontTypeForm, self).__init__(*args, **kwargs)
        self.fields['name'].required = True
class FontTypeAddForm(ModelForm):
    class Meta:
        model = FontType
        fields = [
            'name', 'font_type'
            ]
    def __init__(self, *args, **kwargs):
        super(FontTypeAddForm, self).__init__(*args, **kwargs)
        self.fields['name'].required = True
Trong admin.py gọi Form
admin.site.register(FontType, FontTypeAdmin)
Nếu đặt chung FontTypeForm và sử dụng readonly_fields = (‘font_list’, )
class FontTypeAdmin(SortableAdminMixin, admin.ModelAdmin):
    list_display = ('name', 'font_type')
    search_fields = ('name',)
    list_filter = ('font_type', )
    readonly_fields = ('font_list', )
    form = FontTypeForm
Sẽ dẫn đến lỗi vì DB không có font_list cũng như readonly_fields = (‘font_list’, ) chỉ để hiển thị không sửa chỉnh sửa.
Cần sửa lại như bên dưới.
class FontTypeAdmin(SortableAdminMixin, admin.ModelAdmin):
    list_display = ('name', 'font_type')
    search_fields = ('name',)
    list_filter = ('font_type', )
    def get_form(self, request, obj=None, change=False, **kwargs):
        if obj is None or request.method in ['POST', 'PUT']:
            self.form = FontTypeAddForm
            self.readonly_fields = ()
        else:
            self.form = FontTypeForm
            self.readonly_fields = ('font_list', )
        return super().get_form(request, obj, change, **kwargs)
Hàm get_form sẽ xác định Form và readonly_fields (None hay font_list) dựa vào request.method
Khi View (request.method = GET) : FontTypeForm, readonly_fields = font_list
Khi Add (request.method = POST hoặc PUT): FontTypeAddForm, readonly_fields = ()