7

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

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

4

3 回答 3

17

如果您的目标是在管理部分保存时仅将内容转换为大写,您将需要创建一个具有自定义验证的表单以更改大小写:

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

如果您的目标是始终具有大写的值,那么您应该覆盖模型字段中的保存:

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)
于 2009-05-05T17:52:51.200 回答
3

文档中更新的示例建议使用 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()
于 2012-04-09T11:52:36.277 回答
1

你必须覆盖 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()
于 2009-05-05T17:40:47.940 回答