Skip to content

enhancement to simplify the BaseModel boilerplate code #2637

Closed
@James4Ever0

Description

@James4Ever0

i wrote some code for simplification:

from peewee import *

# some patch on /usr/local/lib/python3.9/dist-packages/peewee.py:3142

# @property
# def Model(self): # this is interesting. does it work as expected?
#     class BaseModel(Model):
#         class Meta:
#             database = self
#     return BaseModel

db = SqliteDatabase('my_database.db')
class User(db.Model):
    username = CharField(unique=True)

Activity

James4Ever0

James4Ever0 commented on Oct 23, 2022

@James4Ever0
Author

ps: i've seen this pattern from sqla-wrapper. this library might be helpful as well.

James4Ever0

James4Ever0 commented on Oct 23, 2022

@James4Ever0
Author

another enhancement:

# /usr/local/lib/python3.9/dist-packages/peewee.py:3420

#   def create_tables(self, models, bind=True,**options):
#       for model in sort_models(models):
#          if bind:
#              model.bind(self)
#          model.create_table(**options)
class User2(Model):
    username = CharField(unique=True)

db.create_tables([User2])
coleifer

coleifer commented on Oct 24, 2022

@coleifer
Owner

I'm going to pass on the create_tables() but have merged the Model property helper.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      enhancement to simplify the BaseModel boilerplate code · Issue #2637 · coleifer/peewee