如何在模型子类中修改父类中字段的属性?
这意味着:我想创建djando.contrib.auth.models.AbstractUser
的子类,并使用相同字段的自定义模型,但修改username
字段:我想更改其validators
和help_text
。
问题:如何在子类中重新定义字段?我必须更改的内容与数据库无关,而是与模型逻辑有关,我的意图是至少在ModelForm中使用该模型。
您可以使用模型的元类中的get_field
方法来获取字段
class User(AbstractUser):
custom_field = models.BooleanField()
...
User._meta.get_field('username').validators = [list of validators,]
User._meta.get_field('username').help_text = "Help text"
请注意,这也将更改User
的所有子类和超类的字段设置,只要它们有字段,因为字段的元数据在所有类中共享。