这是关于在 Django 中制作自定义字段的问题。我正在创建一个名为 的字段EditAreaField
,它继承自TextField
. 这是我的代码的样子:
class EditAreaField(models.TextField):
description = "A field for editing the HTML of a page"
def formfield(self, **kwargs):
defaults = {}
defaults['widget'] = EditArea() # setting a new widget
defaults.update(kwargs)
return super(EditAreaField, self).formfield(**defaults)
在第 5 行,我为该字段分配了一个自定义小部件。在第 6 行,我更新了参数。
问题是,Django 发送了一个widget
设置为的参数django.contrib.admin.widgets.AdminTextareaWidget
,它覆盖了我的 EditArea() 小部件。
如何更改 Django 设置的值?显然,我可以通过切换第 5 行和第 6 行来覆盖他们的设置,所以我的代码如下所示:
defaults.update(kwargs)
defaults['widget'] = EditArea() # override django here
但这真的是最好的方法吗?
附带说明一下,我在 Django 网站上的任何地方都找不到有关 formfield() 函数的文档:它是否已弃用?