1

私は次のものを持っていますModelView

from flask.ext.admin.contrib.pymongo import ModelView
from flask.ext import login
from wtforms import form

class ImageView(ModelView):

    column_labels = dict(
        recordId='Record Id',
        customerId='Customer Id',
        createdAt='Created At',
        updatedAt='Updated At',
        imagePath='Image Path',
        imageUrl='Image Url',
        imageType='Image Type',
        tag='Tag'
    )

    column_list = (
        '_id',
        'recordId',
        'customerId',
        'createdAt',
        'updatedAt',
        'imagePath',
        'imageUrl',
        'imageType',
        'tag'
    )

    column_sortable_list = (
        'customerId',
    )

    column_searchable_list = (
        'customerId',
    )

    form = ImageForm

    def is_accessible(self):
        return login.current_user.is_authenticated()

    def get_list(self, *args, **kwargs):
        count, data = super(ImageView, self).get_list(*args, **kwargs)
        return count, data

また、顧客 ID を検索可能にしたいのですが、残念ながら mongodb では整数型であるため、検索が機能しません。その整数を検索するカスタム検索関数を実装するにはどうすればよいですか? 一意性を強制していないため、重複する可能性が完全にあることに注意してくださいcustomerId。これが、この mongodb ドキュメントの意図です。

4

1 に答える 1

0

解決しました。私が実際にしなければならなかったcustom_filtersのは、受信フィルター値を整数にキャストするカスタムフィルターを使用して適用することだけでした。

このような:

class CustomFilterEqual(filters.BasePyMongoFilter):
    """
    Custom filter which casts the filter value as an integer, if possible.
    Failing which it will just set the value to an empty string, returning no results.
    """
    def apply(self, query, value):
        try:
            value = int(value)
        except:
            value = ""
        query.append({self.column: value})
        print(query)
        return query

    def operation(self):
        from flask.ext.admin.babel import gettext
        return gettext('equals')

上記の私のImageViewクラスでは、属性を削除してcolumn_searchable_list属性を追加しcolumn_filtersます。

column_filters = (
    CustomFilterEqual('customerId', 'Customer Id'),
)
于 2014-08-08T10:25:54.107 に答える