`peewee`如何获取外键的父模型

Posted

技术标签:

【中文标题】`peewee`如何获取外键的父模型【英文标题】:`peewee` how to get the parent model of a foreign key 【发布时间】:2020-11-26 18:49:47 【问题描述】:

假设我创建了几个 pweewee link 模型

db = SqliteDatabase('people.db')
class Person(Model):
    name = CharField()
    birthday = DateField()
    class Meta:
        database = db # This model uses the "people.db" database.
class Pet(Model):
    owner = ForeignKeyField(Person, backref='pets')
    name = CharField()
    animal_type = CharField()
    class Meta:
        database = db # this model uses the "people.db" database
class Car(Model):
    owner = ForeignKeyField(Person, backref='cars')
    model = CharField()
    class Meta:
        database = db # this model uses the "people.db" database 
        

如您所见,CarPet 模型都连接到 Person。假设我有一个对象可以是 carpet。我不确定哪个,但我知道owner 字段是一个外国字段。如何获取该字段的父模型?

【问题讨论】:

【参考方案1】:

好的,我设法找到了答案。

obj._meta.fields 会给我们一个字典,其中键是字段名,值是字段对象。这意味着,我们可以通过以下方式获取字段对象:

owner_field = obj._meta.fields['owner']

现在,要获取模型及其相关的字段,我们需要执行owner_field.rel_modelowner_field.rel_field

【讨论】:

以上是关于`peewee`如何获取外键的父模型的主要内容,如果未能解决你的问题,请参考以下文章

ef core 如何一次从具有外键的不同表中获取数据? (数据库优先)

如何获取每个外键的最短日期记录的记录 ID?

如何在 Sqlite 中将两列合二为一,同时获取外键的底层值?

如何清理 Django 孤儿外键值?

Django外键:获取相关模型?

如何从 peewee 数据库中获取行数?