从字符串Django模板中删除第一个字符

man*_*ski 4 python django templates

我知道这已被多次询问,但每个人都能找到的解决方案(以及文档)似乎对我不起作用......

试图删除第一个字符

代码是 {{ picture.picture_path|slice:"1:" }}

但它仍然出现了./DOF_mrD5T49.jpg.试图获得领先的点.是否有可能我无法将其删除,因为它是"名称" picture_path

相关型号代码:

class Picture(models.Model):
    picture_path = models.ImageField(blank=True)

    def __str__(self):
        return self.picture_path.name
Run Code Online (Sandbox Code Playgroud)

sol*_*oke 7

这应该工作:

{{ picture.picture_path.name|slice:"1:" }}
Run Code Online (Sandbox Code Playgroud)

您的第一次尝试不起作用的原因是picture.picture_path代表FieldFile对象而不是字符串.这是传递给slice过滤器的内容.

slice过滤器无法静默如果提供一个无效的输入,并返回该供给原始值.只有在此之后,Django才会尝试使用对象的__str__方法将原始值转换为字符串.