Найти - Пользователи
Полная версия: [flask] Ошибка при работе с отношениями между таблицами
Начало » Web » [flask] Ошибка при работе с отношениями между таблицами
1
Andrew_Lvov
Есть файл model/__init__.py
Там обьявлены модели Artwork, Person.
У Artwork есть foreign key к Person:
class Artwork(db.Model, SimpleSerializeMixin):
    id = db.Column(db.Integer, primary_key=True)
    ....
    artist_id = db.Column(db.String(256), db.ForeignKey('person.sub'))
    artist = db.relationship('Person', backref='artworks')

И сам Person:
class Person(db.Model, SimpleSerializeMixin):
    sub = db.Column(db.String(256), primary_key=True)
    ...

При попытке использовать получаю ошибку:
InvalidRequestError: When initializing mapper Mapper|Artwork|artwork, expression ‘Person’ failed to locate a name (“name ‘Person’ is not defined”). If this is a class name, consider adding this relationship() to the <class ‘model.Artwork’> class after both dependent classes have been defined.

Что я забыл сделать либо сделал не так ?
FishHook
Andrew_Lvov
Что я забыл сделать либо сделал не так ?
Вы забыли, что код питона не читается без отступов, поэтому в том виде, в котором Вы его разместили никто в нем ковыряться не будет и Ваш вопрос останется без ответа.
Форма редактирования вопроса на python.su имеет развитый функционал для оформления кода. Воспользутесь им.
Andrew_Lvov
Поправил
Andrew_Lvov
Видимо, даже так вопрос останется без ответа )
4kpt_II
Почему? Вопрос должен быть поставлен в другом разделе.
Если по-вопросу. Вообще странно. Должно работать. Попробуйте то-же напилить в чистой алхимии.


alexbadaloff
Andrew_Lvov
Видимо, даже так вопрос останется без ответа )

Поменяйте последовательность объявлений классов в коде.
Банально объявите класс Person до Artwork
PooH
Подозреваю проблемы конфликта методов/атрибутов у db.Model и SimpleSerializeMixin, для начала попробуйте их поменять местами в объявлении класса.
alexbadaloff
Если честно, я всегда думал, что на форуме спрашивают, когда совсем ничего не гуглится.
Но в данном случае куча таких же вопросов, да еще и с работающими ответами - клик
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB