私はFlags-AdminをMongoengineと併用しようとしています。私は "永続的なフィルタ"を実装するソリューションを見つけることができません。つまり、ユーザーはmongoengineのカスタムクエリの結果である、ビュー(リスト)内の項目のみを表示して操作する必要があります。Flask-Admin with mongoengine - ビューに「永続フィルタ」を設定するには?
私はモデル
class User(Document):
name = StringField()
days = DecimalField()
book = StringField()
を持っていると私は最初のビューで特定のユーザーに応じた書籍のみを表示したい場合は、私はクエリを実行します:
user_peter = User.objects(name=’Peter’)
と私が欲しい場合
overdue_books = User.objects(name=’Peter’, days__gt=28)
私はカスタムフラスコ管理者-VIにそれを実装する方法:ピーター延滞図書を表示するために、私は、クエリを行うだろうew? ModelViewで何を設定する必要がありますか?
Class LentBooks(ModelView):
menu_class_name=”Your Books”
#???
Class OverdueBooks(ModelView):
menu_class_name=”Overdue Books”
#???
ここに入力する必要がありますか?
Admin.add_view(LentBooks(model=User, #???))
はSQLAlchemyのためではなくmongoengineため、多くのレシピがあります。助けてください!
私が発見した何を、flask_admin.contrib.mongoengine.filters
class FilterEqual(BaseMongoEngineFilter):
def apply(self, query, value):
flt = {'%s' % self.column.name: value}
return query.filter(**flt)
def operation(self):
return lazy_gettext('equals')
しかし、どのようにこれを実装するためにあります?
ありがとうございました! MongoDBの中
from flask import Flask
import flask_admin as admin
from flask_mongoengine import MongoEngine
from flask_admin.contrib.mongoengine import ModelView
app = Flask(__name__)
app.config['SECRET_KEY'] = '1234567890'
app.config['MONGODB_SETTINGS'] = {'db': 'library'}
db = MongoEngine()
db.init_app(app)
class User(db.Document):
name = db.StringField()
days = db.DecimalField()
book = db.StringField()
class OverdueBooks(ModelView):
def get_query(self):
overdue_books = User.objects(name='Peter', days__gt=28)
return overdue_books
if __name__ == '__main__':
admin = admin.Admin(app, 'Example: Library')
admin.add_view(OverdueBooks(model=User, name='Library'))
app.run(debug=True)
:ここ
小テスト・ソースのpjcunninghamからソリューションです
{ "_id" : ObjectId("5815f403e198515188860e3c"), "name" : "Jane", "days" : 21, "book" : "Testbook1" }
{ "_id" : ObjectId("5815f416e198515188860e3d"), "name" : "Peter", "days" : 30, "book" : "Testbook2" }
はどうもありがとうございました!できます!
ありがとうございました! 私はあなたに質問することができます。トピック「フィルタを使用したフィルタリング」についての詳細はどこにありますか? –
@Henrich Schlegal - [SQLAlchemyビュー](http://flask-admin.readthedocs.io/en/latest/api/mod_contrib_sqla/#flask_admin.contrib.sqla.ModelView.get_query)のソースで簡単なメモが見つかりました。 )。 mongoengineには 'get_count_query'をオーバーライドする必要がない点に似たメモがあります。 – pjcunningham
すべての例はSQLAlchemyについてです!そしてAmazonにMongoengineに関する本は1つしかなく、ポルトガル語で書かれています! mongoengineを学ぶことは非常に難しいです。再度、感謝します! –