goe*_*elv 4 python sorting django django-models django-forms
我有一个ProductForm,用户可以添加一个Product与信息,如数据库title,price和condition.
如何使用当用户提交表单时,title字段的第一个字母会自动大写?
例如,如果用户在表单中键入"优质床垫",则django将其保存为数据库中的"优质床垫".
仅供参考,我问的原因是因为当我在页面上显示所有产品对象时,Django按标题排序的功能区分大小写.因此,"Bravo","糟糕","惊人"将被分类为"惊人","勇敢","可怕"作为用户时,我们知道这不是按字母顺序排列的.
谢谢您的帮助!
Jer*_*wis 16
表单有一个内置的钩子,用于清理特定字段(docs),这对于这段代码来说是一个更清晰(双关语)的位置:
class ProductForm(forms.Form):
...
def clean_title(self):
return self.cleaned_data['title'].capitalize()
Run Code Online (Sandbox Code Playgroud)
代码远远少于接受的答案,没有不必要的覆盖.
您可以覆盖Model的save方法(它的好处是能够在一个地方简洁地处理多个字段):
class Product(models.Model):
...
def save(self, *args, **kwargs):
for field_name in ['title', 'price', ... ]:
val = getattr(self, field_name, False)
if val:
setattr(self, field_name, val.capitalize())
super(Product, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6636 次 |
| 最近记录: |