`peewee` как получить родительскую модель внешнего ключа - PullRequest
0 голосов
/ 06 августа 2020

Допустим, я создал несколько 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 
        

Как видите, обе модели Car и Pet подключены к Person. Допустим, у меня есть объект, который может быть как car, так и pet. Я не уверен, что c, но я знаю, что поле owner является чужим полем. Как мне получить родительскую модель этого поля?

1 Ответ

0 голосов
/ 06 августа 2020

Хорошо, мне удалось найти ответ.

obj._meta.fields даст нам словарь, где ключ - это имя поля, а значение - это объект поля. Это означает, что мы можем получить объект поля следующим образом:

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

Теперь, чтобы получить модель и поле, с которым она связана, нам нужно сделать owner_field.rel_model и owner_field.rel_field

...