python - 修改抽象模型中字段的 max_length
问题描述
class AbstractBaseField(models.Model):
choices = models.CharField(_("Choices"), max_length=1000, blank=True)
class Meta:
abstract = True
class TicketField(AbstractBaseField):
pass
TicketField._meta.get_field("choices").max_length = 5000
我正在尝试修改继承自抽象模型max_length
的字段上的属性。TicketField
如您所见,我已经对模型定义的字段进行了猴子修补,并且按预期生成了迁移。该字段已max_length
正确应用,我可以通过外壳很好地设置该值,但管理员验证失败,好像旧max_length
的仍然存在,显示错误Ensure this value has at most 1000 characters (it has XXXX)。
我max_length
在运行时检查了 ModelForm 和 Validator 值,它们都使用 new max_length
,但不知何故仍然会引发验证错误。
(Pdb) self.fields["choices"].max_length
5000
(Pdb) self.fields["choices"].validators[0]._constructor_args
((5000,), {})
(Pdb) self.fields["choices"].widget.attrs
{u'class': u'vTextField', u'maxlength': '5000'}
解决方案
推荐阅读
- python - gunicorn 发送信息消息处理信号:绞盘
- python - 如何在 PsychoPy 或 Python 中对 WPI 注射泵进行编程?
- c# - 如何隐藏使用 Selenium 打开或切换选项卡时弹出的窗口
- python - 用正则表达式替换python文件内容和行首问题
- sql - SQL HTTP 函数或过程
- openapi - 当字段应该是 IRI 或常规字符串时区分 OpenApi 文档
- android - Android Studio 应用程序通知权限默认关闭?
- android - 在 LinearLayout 中自动计算边距
- python - 对整数进行条件检查时出错
- python - 如何在 python 中使用 presignedurl 将用户(csv)导入 AWS cognito