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个字符,但我的手动方法似乎允许创建超长字段。
我如何避免这种情况(除了在检查字段长度之后手动截断字符串,我可以这样做,但这似乎很麻烦 - 似乎我可以在表单或数据库中处理它)? 既然我的数据库中有一些这样的时间炸弹,那么摆脱它们最简单的方法是什么?
答案 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
。如果您使用的是其他数据库,则在尝试保存太长的字符串时会出现完整性错误。