当前位置: 首页 > 面试题库 >

(Django)从charField修剪空格

赵智勇
2023-03-14
问题内容

如何在Django中charField的末尾去除空格(trim)?

这是我的模型,如您所见,我已经尝试过使用干净的方法,但是这些方法永远不会运行。

我也尝试过这样做name.strip()models.charField().strip()但是这些也不起作用。

有没有办法强制为我自动修剪charField?

谢谢。

from django.db import models
from django.forms import ModelForm
from django.core.exceptions import ValidationError
import datetime

class Employee(models.Model):
    """(Workers, Staff, etc)"""
    name                = models.CharField(blank=True, null=True, max_length=100)

    def save(self, *args, **kwargs):
        try:
            # This line doesn't do anything??
            #self.full_clean()
            Employee.clean(self)
        except ValidationError, e:
            print e.message_dict

        super(Employee, self).save(*args, **kwargs) # Real save

    # If I uncomment this, I get an TypeError: unsubscriptable object
    #def clean(self):
    #   return self.clean['name'].strip()

    def __unicode__(self):
        return self.name

    class Meta:
        verbose_name_plural = 'Employees'

    class Admin:pass


class EmployeeForm(ModelForm):
    class Meta:
        model = Employee

    # I have no idea if this method is being called or not  
    def full_clean(self):       
        return super(Employee), self.clean().strip()
        #return self.clean['name'].strip()

编辑:将代码更新为我的最新版本。我不确定我在做什么错,因为它仍然没有剥离空白(修剪)名称字段。


问题答案:

必须调用模型清洗(这不是自动的),因此请self.full_clean()在保存方法中放置一些模型清洗。
http://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.full_clean

对于您的表单,您需要返回剥离后的清理数据。

return self.cleaned_data['name'].strip()

我以某种方式认为您只是尝试做一堆行不通的事情。请记住,表单和模型是两件截然不同的东西。

查看有关如何验证表单的表单文档
html" target="_blank">http://docs.djangoproject.com/en/dev/ref/forms/validation/

super(Employee), self.clean().strip() makes no sense at all!

这是您的固定代码:

class Employee(models.Model):
    """(Workers, Staff, etc)"""
    name = models.CharField(blank=True, null=True, max_length=100)

    def save(self, *args, **kwargs):
        self.full_clean() # performs regular validation then clean()
        super(Employee, self).save(*args, **kwargs)


    def clean(self):
        """
        Custom validation (read docs)
        PS: why do you have null=True on charfield? 
        we could avoid the check for name
        """
        if self.name: 
            self.name = self.name.strip()


class EmployeeForm(ModelForm):
    class Meta:
        model = Employee


    def clean_name(self):
        """
        If somebody enters into this form ' hello ', 
        the extra whitespace will be stripped.
        """
        return self.cleaned_data.get('name', '').strip()


 类似资料:
  • 问题内容: 和有什么区别?该文档说应该用于较小的字符串,而应用于较大的字符串。好的,但是“小”和“大”之间的界线在哪里?这到底是怎么回事? 问题答案: (或类似的)之间的区别是-通常以最大长度来指定,并且在性能或存储方面可能更有效-和(或类似)类型-这些通常仅受硬编码实现限制(而不是数据库架构)。 PostgreSQL 9特别指出“这三种类型之间没有性能差异”,但是AFAIK在MySQL等方面存在

  • 本文向大家介绍JavaScript 修剪空白,包括了JavaScript 修剪空白的使用技巧和注意事项,需要的朋友参考一下 示例 要从字符串的边缘修剪空格,请使用String.prototype.trim: 许多JavaScript引擎(而非Internet Explorer)实现了非标准trimLeft和trimRight方法。目前,在该过程的第1阶段,有一项提议是标准化trimStart和tr

  • 问题内容: 是否有Python函数可以从字符串中修剪空白(空格和制表符)? 例如:→ 问题答案: 对于两侧的空格,请使用: 对于右侧的空格,请使用: 对于左侧的空格: 正如thedz所指出的,您可以提供一个参数来将任意字符剥离到以下任何函数中: 这将去除任何空间,,,或从左侧字符,右手侧,或该字符串的两侧。 上面的示例仅从字符串的左侧和右侧删除字符串。如果还要从字符串中间删除字符,请尝试: 那应该

  • 问题内容: 是否有Python函数可以从字符串中修剪空格(空格和制表符)? 例如: 问题答案: 两侧的空格: 右侧的空格: 左侧的空白: 正如thedz所指出的,你可以提供一个参数来将任意字符剥离到以下任何函数中: 这将去除任何空间,,或从左侧字符,右手侧,或该字符串的两侧。 上面的示例仅从字符串的左侧和右侧删除字符串。如果还要从字符串中间删除字符,请尝试: 那应该打印出来:

  • 问题内容: 假设$ 2是我的变量。我尝试过 至 但是它从打印某些内容到什么都不打印。 问题答案: 您正在打印的结果,但是进行的就地修改,而不是返回修改后的副本。致电,然后打印:

  • 我有一个pdf包含一些数据,后面是一些空白。我不知道数据有多大,但我想删掉数据后面的空格 有没有一种方法可以剪裁/修剪新文档中每一页的空格?此PDF包含矢量图形。 我使用iTextPDF,但可以切换到任何Java库(mavenized,Apache许可优先)