django - 将表单域的第一个字母大写(不保存新值)
问题描述
我正在尝试自动将模型表单字段的第一个字符转换为大写,但保存了原始值。
class TechnologyCreatePopup(CreateView):
model = Technology
form_class = TechnologycreateForm
template_name = 'technology_create.html'
def form_valid(self, form):
"""If the form is valid, save the associated model."""
self.object = form.save(commit=False)
if form.cleaned_data['name'][0].isupper():
self.object.save()
else:
name = form.cleaned_data['name']
c_name = name[0].capitalize() + name[1:]
print(c_name) ---> print me name with uppercase!
form.cleaned_data['name'] = c_name
self.object.save()
return HttpResponse(
'<script>opener.closePopup(window, "%s", "%s", "#id_technology");</script>' % (self.object.pk, self.object))
我也认为这不是一个好的解决方案(我的意思是使用切片、附加变量和字符串连接)。也许还有更有趣的方式?
解决方案
你可以save()
在你的models.py
.
class Technology(models.Model):
---
def save(self, *args, **kwargs):
self.name = self.name.capitalize()
return super().save(self, *args, **kwargs)
或者,如果您真的想按照自己的方式去做。
def form_valid(self, form):
"""If the form is valid, save the associated model."""
obj = form.save(commit=False)
if obj.name[0].isupper():
obj.save()
else:
obj.name = obj.name[0].capitalize() + obj.name[1:]
obj.save()
-------------------------
我没有测试这些代码。但它应该可以正常工作
推荐阅读
- javascript - 如何使 Javascript/React/Typescript 获取调用异步?
- java - 反射库,无法在我的包中找到任何类
- groovy - Jenkins withDockerRegistry for image out of stage 失败
- c# - 角色旋转但仅朝一个方向移动。(统一 2d)
- python - 根据列表的最后一个值和第一个值在python中附加嵌套列表
- javascript - 在局部变量中保存重复访问的对象属性是否有缺点?
- javascript - Powershell中的Javascripts encodeURI等价物?
- git - 无法克隆 Git Repo:SSL 替代证书错误
- html - 中间“数据标签”中的新行
- java - 无法从 firebase 获取结果并显示在警报对话框中