2017-07-27 29 views
1

我已经在Django大写charfield

zip_code = models.CharField(_('Zip code'), max_length=19, blank=True, null=True) 

定义字段在那一刻,我需要每一个字母要大写该字段。我用这个字段formlayout.py文件:

 Row(
      Column('city', css_class="s12 m5"), 
      Column('state', css_class="s12 m5"), 
      Column('zip_code', css_class="s12 m2"), 
     ), 

我怎么能利用zip_code没有覆盖的领域本身?我可以创建一个@property方法来转换这个字段吗?什么是放置这种方法的最佳地点? utils.pyviews.pymodels.py

例如,如果原来zip_code是j3w 1W7的话,我希望它成为J3W 1W7

回答

2

假设你有一个形式或模型的形式,最容易做的事情是添加clean_<fieldname>方法。

class MyForm(forms.ModelForm): 
    ... 

    def clean_zip_code(self): 
     return self.cleaned_data['zip_code'].upper() 
+0

我需要在第三个和第四个字符之间放置空格。你有一个想法如何做到这一点? –

+1

这是一个单独的问题。你试过什么了?请注意,对于[英国邮政编码](https://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom),您希望在最后三个字符之前放置空格,而不是第三个和第四个字符之间。考虑'M1 1AE '或'EC1A 1BB'。 – Alasdair