Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I am struggling with the following:

from my_db_definition import db
from peewee import *
class A(Model):
    class Meta:
        database=db
        table_name = 'random'
        
class B(A):
    pass

when running

print(A._meta.table_name)
print(B._meta.table_name)
random
b

My question is now, why is the table name changed in this case, and can this be prevented? I am completely confused

question from:https://stackoverflow.com/questions/65923090/peewee-meta-class-inherence

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
964 views
Welcome To Ask or Share your Answers For Others

1 Answer

http://docs.peewee-orm.com/en/latest/peewee/models.html#model-options-and-table-metadata

The docs list which options are inherited and which are not.

Only certain attributes are passed to the subclass via the inner "Meta" class. It's purpose is 1) namespacing, and 2) provide conventions around DRY code.

table name is not inherited because presumably you only want one class-per-table, whereas database is inherited because it makes sense to only declare that once.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...