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

在将值发送到dB之前,如何在提交后剥离Django admin中的字符?

  •  0
  • joedevon  · 技术社区  · 16 年前

    我对PHP&MySQL,除了我最近使用Django管理员学到的一点点东西之外,我对Python一无所知……因此,请原谅这个我不好意思问的非常愚蠢的问题。在PHP中,这对我来说是微不足道的。。。

    当用户点击submit时,我希望在发送到数据库之前验证该字段,并去掉该#符号。

    提前感谢您帮助这个Django新手:)

    更新:

    根据S.Lott的代码,以下是有效的:

    def save(self):
        if self.hexvalue.startswith("#"):
            self.hexvalue= self.hexvalue[1:]
        super(Color, self).save()
    
    1 回复  |  直到 16 年前
        1
  •  1
  •   S.Lott    16 年前

    通常,您需要定制表单来正确清理数据。(起初)这似乎有些过分,但这是一个非常普遍的解决方案。

    您必须(1)定义修改后的表单,然后(2)将修改后的表单绑定到管理界面。

    另一方面,您可以在模型的 save

    class MyThing( models.Model )
        color = models.CharField(...)
        def save( self, *args, **kw ):
            if self.color.startswith("#"):
                self.color= self.color[1:]
            super( MyThing, self ).save( *args, **kw )