我可以向派生自 peewee.Model 的类添加方法和属性吗

ste*_*nci 5 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):
        [...]
Run Code Online (Sandbox Code Playgroud)

编辑:

我将不胜感激有关构造函数的评论。

例如,我想做这两个:

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

col*_*fer 4

是的!当然可以,无论如何。模型只是普通的 Python 类,因此您可以将它们视为普通的 Python 类,并添加方法、属性、属性等。