类的方法转换为列表表达式

    def style_no(self):
        paving_id = self.paving_id
        for i in range(3 - len('%s' % self.paving_id)):
            paving_id = '0%s' % paving_id
        return '1%s' % paving_id

上述方法在模型里定义
paving_id 为数据库里的小于或者等于三位数的顺序码,现在转换为以1开头的四位码。
可以转换为列表表达式的方式在 views里使用吗?
因为在VIEWS里要使用到Q查询。

阅读 2.5k
3 个回答

在模型里定义了可以直接在 views 里用啊,obj.style_no() 就行啊。

你的意思是一个 queryset 然后里面每个 model obj 都想用这个方法返回一个 paving_id ? 你要说清楚啊,不然怎么回答。

还有就是你的 style_no 写的太复杂了,这样写就行:

    def style_no(self):
        return '1%03i' % int(self.paving_id)
paving_id = self.paving_id
str(1).join(
            ['0%s'%paving_id for _ in range(3 - len(str(self.paving_id)))]
            )

目测 @rapospectre 的回答应该是正解,本来挺简单的一件事,不知道为嘛要想得这么复杂。提供另一种解法

def style_no(self):
    '1{:0>3}'.format(self.paving_id)    

如果不想改变原id,可以用'{:0>4}'.format(self.paving_id)直接扩展到4位id就可以了,之前的代码用'{:0>4}'.format(paving_id)就可以自动扩展到4位甚至n位

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏