这是关于在Django中制作自定义字段的问题。我正在创建一个名为EditAreaField
的字段,它继承自TextField
。这里是我的代码如下所示:Django中调用的formfield()方法是什么时候?
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日线,我指定一个自定义的widget到这个领域。 在线6,我更新参数。
问题是,Django发送参数widget
设置为django.contrib.admin.widgets.AdminTextareaWidget
,它覆盖了我的EditArea()小部件。
如何更改Django设置的值?很显然,我可以只覆盖由开关线5和6的设置,所以我的代码如下所示:
defaults.update(kwargs)
defaults['widget'] = EditArea() # override django here
但是,这是真正做到这一点的最好方法是什么?作为一个方面说明,我无法在Django站点上的任何位置找到关于formfield()函数的文档:它是否被弃用?
我正在阅读您的问题。这是链接到formfield上的文档[http://docs.djangoproject.com/en/dev/howto/custom-model-fields/#django.db.models.formfield](http://docs.djangoproject.com /en/dev/howto/custom-model-fields/#django.db.models.formfield) – czarchaic 2009-12-27 06:16:14
糟糕。 http://docs.djangoproject.com/en/dev/howto/custom-model-fields/#django.db.models.formfield – czarchaic 2009-12-27 06:17:13