代码之家  ›  专栏  ›  技术社区  ›  Andor

通过Django管理站点添加数据时更改大小写(上/下)

  •  4
  • Andor  · 技术社区  · 17 年前

    我正在配置我的新项目的管理网站,我有点怀疑我应该怎么做,在通过管理网站添加数据时点击“保存”,所有内容都转换为大写。。。

    编辑:好的,我知道.upper属性,我做了一个视图,我知道怎么做,但是我想知道在管理站点上是否有任何可用于字段配置的属性:P

    3 回复  |  直到 17 年前
        1
  •  17
  •   wbyoung    17 年前

    如果您的目标是在“管理”部分保存时只将内容转换为大写,那么您需要 create a form with custom validation 要更改案例,请执行以下操作:

    class MyArticleAdminForm(forms.ModelForm):
        class Meta:
            model = Article
        def clean_name(self):
            return self.cleaned_data["name"].upper()
    

    override save 在模型字段中:

    class Blog(models.Model):
        name = models.CharField(max_length=100)
        def save(self, force_insert=False, force_update=False):
            self.name = self.name.upper()
            super(Blog, self).save(force_insert, force_update)
    
        2
  •  3
  •   Martijn Pieters    14 年前

    文档中更新的示例建议使用args、kwargs传递为:

    Django将不时扩展内置软件的功能 建模方法,添加新参数。如果使用*args,**kwargs 添加这些参数时自动支持这些参数。

    class Blog(models.Model):
        name = models.CharField(max_length=100)
        tagline = models.TextField()
    
        def save(self, *args, **kwargs):
            do_something()
            super(Blog, self).save( *args, **kwargs) # Call the "real" save() method.
            do_something_else()
    
        3
  •  1
  •   Javier    17 年前

    你必须 override save()

    class Blog(models.Model):
        name = models.CharField(max_length=100)
        tagline = models.TextField()
    
        def save(self, force_insert=False, force_update=False):
            do_something()
            super(Blog, self).save(force_insert, force_update) # Call the "real" save() method.
            do_something_else()