向现有Django模型字段添加参数

时间:2020-11-09 02:49:49

标签: python django django-models

注意:类似的问题也有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)

但是,文档没有指定在这种情况下重写的工作原理(例如,我应该在哪里添加一个附加属性以及必须包含哪些方法),这使我提出了这个问题。

同样,由于我已经停留了很长时间,所以我更喜欢示例而不是概念。

0 个答案:

没有答案