如何在模型子类中修改父类中字段的属性?
这意味着:我想创建一个djando.contrib.auth.models.AbstractUser
的子类,并让我的自定义模型具有相同的字段但是要修改username
字段:我想要更改其validators
和{{ 1}}。
问题:如何重新定义子类中的字段?我必须改变的事情不是数据库相关的,而是与模型逻辑相关的,我的意图是至少在ModelForm中使用该模型。
答案 0 :(得分:1)
您可以使用模型的元类中的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
的所有子类和超类的字段设置,只要它们具有该字段,因为字段的元数据在所有类之间共享。