Вот ситуация, с которой я сталкиваюсь, я использую Peewee для доступа к метаданным (только для чтения) с веб-сайта django для обработки данных.
models/base.py
:
db = DatabaseProxy()
class BaseModel(Model):
"""Base model used to tie all the models to a database instance, any model
created must inherit from this class.
"""
class Meta:
database = db
models/nodes.py
:
from .base import BaseModel
class Node(BaseModel):
"""Node model"""
uuid = CharField(index=True)
name = CharField()
class Meta:
table_name = 'nodes_node'
models/tags.py
:
from .base import BaseModel
from .nodes import Node
class Tag(BaseModel):
name = CharField()
uuid = CharField(index=True)
class Meta:
table_name = 'tags_tag'
class TagNode(BaseModel):
"""A private class used on the pivot table to implement the Many-To-Many
relation between :py:class:`Tag` and :py:class:`Node`.
"""
node = ForeignKeyField(Node,
backref='tags',
column_name='node_id',
field='id'
)
tag = ForeignKeyField(Tag,
backref='nodes',
column_name='tag_id',
field='id'
)
class Meta:
table_name = 'tags_tag_nodes'
indexes = (
(('tag', 'node'), True),
)
У меня есть несколько методов на модели Tag
, которые создают и возвращают запросы с использованием соединения TagNode
Таблица. Теперь я хотел бы построить аналогичные методы на модели Node
, но попал в круговые проблемы импорта и не вижу, как это исправить. Я попытался использовать DeferredForeignKey
для соединительной таблицы, как предложено в документации , но без игры в кости.
Я бы хотел сохранить модульность, так как у меня есть много других модели и размещение всего в одном файле кажется нецелесообразным.
То, что я до сих пор пробовал: перемещение модели соединения в выделенный модуль с помощью DefferedForeignkey
, воспроизведение с порядком импорта.