注意:类似的问题也有another thread,但是这个问题更为详细,上面的帖子中提到的答案也不尽人意(以下详述)
我试图创建一个自定义Django模型字段,新字段在本质上与CharField
相同,但是具有其他布尔属性-现在,只需调用它是“公开的”。
我查阅了this article,但是我不喜欢所描述的方法,因为它要求我从头开始构建模型。考虑到docs,添加一个参数必须实现的功能数量,该解决方案很麻烦。
为了阐明我的目标,我想这样声明这个字段:
somefield = BoolCharField(public=True, max_length=100, blank=True)
# Note that public is NOT a default CharField attribute
文档指出,我可以扩展现有字段中的新字段,但是the process并未详细说明。谁能为我提供一个有关如何实现自己领域的示例?
This是CharField的源代码,以防有人需要引用。
更新
我看了一下重写默认的__init__
方法。文档建议如下:
from django.db import models
class HandField(models.Field):
def __init__(self, *args, **kwargs):
kwargs['max_length'] = 104
super().__init__(*args, **kwargs)
但是,文档没有指定在这种情况下重写的工作原理(例如,我应该在哪里添加一个附加属性以及必须包含哪些方法),这使我提出了这个问题。
同样,由于我已经停留了很长时间,所以我更喜欢示例而不是概念。