Документы для Камелот говорят, что он использует Эликсир моделей. Поскольку SQLAlchemy какое-то время включал декларативную_базу, я использовал ее вместо Elixir для другого приложения. Теперь я хотел бы использовать SQLAlchemy / декларативные модели непосредственно в Камелоте.
В Stackoverflow есть запись , в которой говорится, что Камелот не привязан к Elixir, и что использование других моделей было бы возможно, но в нем не сказано, как.
Оригинал Камелота model.py
содержит только это содержание:
import camelot.types
from camelot.model import metadata, Entity, Field, ManyToOne, OneToMany, Unicode, Date, Integer, using_options
from camelot.view.elixir_admin import EntityAdmin
from camelot.view.forms import *
__metadata__ = metadata
Я добавил свою модель SQLAlchemy и изменил model.py
на это:
import camelot.types
from camelot.model import metadata, Entity, Field, ManyToOne, OneToMany, Unicode, Date, using_options
from camelot.view.elixir_admin import EntityAdmin
from camelot.view.forms import *
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
__metadata__ = metadata
Base = declarative_base()
class Test(Base):
__tablename__ = "test"
id = Column(Integer, primary_key=True)
text = Column(String)
Это не сработало. Когда я запускаю main.py
, я вижу GUI и Test
на боковой панели, но не вижу никаких строк. Это хвост трассировки:
File "/usr/lib/python2.6/dist-packages/camelot/view/elixir_admin.py", line 52, in get_query
return self.entity.query
AttributeError: type object 'Test' has no attribute 'query'
Это код elixir_admin.py
для строки 46-52:
@model_function
def get_query(self):
""":return: an sqlalchemy query for all the objects that should be
displayed in the table or the selection view. Overwrite this method to
change the default query, which selects all rows in the database.
"""
return self.entity.query
Если этот код вызывает проблему, как переписать метод, чтобы изменить запрос по умолчанию, чтобы он работал?
Как вы можете использовать SQLAlchemy / декларативные модели в Камелоте?