Camelotのドキュメントでは、Elixirモデルを使用しています。 SQLAlchemyはしばらくの間、declarative_baseをインクルードしていたので、私は別のアプリケーションのためにElixirの代わりにそれを使っていました。今私はCamelotでSQLAlchemy/declarativeモデルを直接使用したいと思います。Python CamelotはElixirに結びついていますか?
postはキャメロットがエリクサーに縛らないであり、異なるモデルを使用することが可能であろうと述べているが、それはどのように言っていないことにStackOverflowにあります。
キャメロットのオリジナル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'
これはライン46-52のためelixir_admin.py
コードです:このコードは、問題を引き起こしている場合
@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/declarativeモデルを使用するにはどうすればよいですか?
問題を作成するコードを入力してください。 – Nilesh
コードは上記です。違いを見ることができるように、元の 'model.py'コードを追加しました。 – boadescriptor
はい、あなたのコードが 'Test'の' query'属性にアクセスしようとしている文を見つけられませんでした。トレースバックを投稿してください。 – Nilesh