我可以将方法和属性添加到派生自peewee.Model的类中

时间:2014-09-12 21:00:37

标签: python peewee

我正在与Cherrypy和Peewee合作开发一个应用程序,我想知道我的方法是好是坏还是危险。

我发现的Peewee类的所有示例都只有Meta子类和<xxx>Field属性。我从未找到过辅助方法或属性的示例。

我试着制作自己的,但它确实有效!

效果很好,我觉得很方便,但我担心自己会遇到麻烦。

所以我的问题是:我可以为从peewee.Model派生的类添加尽可能多的属性和方法,所以我可以在下面的代码片段中做很酷的事情吗?

或者我可以做什么限制和指导?

class PeeweeModel(peewee.Model):
    class Meta:
        database = db

class TempFile(PeeweeModel):
    file_type = peewee.IntegerField()
    original_file_name = peewee.CharField()
    temp_file_name = peewee.CharField()

    DRAWING = 1
    PDF = 2

    def href(self, settings):
        if(self.file_type == DRAWING:
            return self.temp_file_name
        elif(self.file_type == PDF:
            if settings.show_pdf:
                return self.temp_file_name
            elif settings.show_bitmap:
                bitmap = TempFile.create_bitmap_from_pdf(self.temp_file_name)
                return bitmap.temp_file_name

    @staticmethod
    def create_bitmap_from_pdf(self, file_name):
        [...]

修改

我很感激关于构造函数的评论。

例如,我想这两个:

tmp = TempFile(file_name)                            # and run my own constructor
tmp = TempFile(original_file_name=file_name, [...])  # and run Peewee's constructor

1 个答案:

答案 0 :(得分:1)

是的!当然,你可以通过各种方式。模型只是普通的python类,所以你可以这样处理它们并添加方法,属性,属性等。