Django CharFields中的Max_length

时间:2017-12-20 16:56:38

标签: django django-forms

Django文档表明:

@Scheduled(fixedDelay = 1440000)

究竟是什么意思?我有一个例程来解析输入CSV文件以创建一些模型,并且在我使用以下方法创建对象的过程中有一个超长的FROM java:openjdk-8 ENV SPRING_PROFILES_ACTIVE dev,docker WORKDIR /app EXPOSE 9000 9000 RUN apt-get update && apt-get -y install cron RUN service cron start COPY build/libs/app.jar /app/app.jar CMD ["/bin/sh", "-c", "java -jar /app/app.jar --spring.profiles.active=$SPRING_PROFILES_ACTIVE"] 字段:

The max_length is enforced at the database level and in Django’s validation.

错误仅在稍后提出,因为用户尝试使用表单编辑对象(不会验证)。使用相同的表单创建对象时,输入字段将不允许键入超过第30个字符,但我的手动方法似乎允许创建超长字段。

我如何避免这种情况(除了在检查字段长度之后手动截断字符串,我可以这样做,但这似乎很麻烦 - 似乎我可以在表单或数据库中处理它)? 既然我的数据库中有一些这样的时间炸弹,那么摆脱它们最简单的方法是什么?

1 个答案:

答案 0 :(得分:1)

由于历史原因,在创建或保存对象时不会调用Django验证,但它是由模型表单触发的,包括在Django管理员中。

您可以通过调用full_clean()

手动触发验证
from django.core.exceptions import ValidationError

new_standard = Standard(Name=lname,ShortName=sname,calcmethod=method,Description=descr,course=course,Order=stdnum)
try:
    new_standard.full_clean()
except ValidationError as exp:
    # Do something here
    pass
else:
    save()

请注意,SQLite不会强制执行max_length。如果您使用的是其他数据库,则在尝试保存太长的字符串时会出现完整性错误。