1

admin.pyクラスを定義することによる標準的なアプローチ:

exclude = ('some_hstore_field', )

動作しません。

明示的に指定することで期待される結果を得ることができましたfieldsが、必要なものをすべて指定するよりも、必要のないものを除外したいと思います。

4

1 に答える 1

1

モデルに hstore フィールドがあると仮定すると、次のようになりますfacilities

facilities = hstore.DictionaryField(schema=HSTORE_SCHEMA)

次に、次のように書くことはできません。

exclude = ('some_non_hstore_field', 'facilities')

hstore スキーマが次のようになっていると仮定します。

HSTORE_SCHEMA = [
    {
        "name": "vegetarian_menu",
        "class": "BooleanField",
        "kwargs": {
            "default": False,
            "verbose_name": "vegetarian menu"
        }
    },
    {
        "name": "vegan_menu",
        "class": "BooleanField",
        "kwargs": {
            "default": False,
            "verbose_name": "vegan menu"
        }
    }
]

各サブフィールドをその名前で除外する必要があります。例:

exclude = ('some_non_hstore_field', 'vegetarian_menu', 'vegan_menu')

あなたはこのようにすることができます:

exclude = tuple(['some_non_hstore_field'] + [field['name'] for field in HSTORE_SCHEMA])

またはこのように-クラスフィールドのメタを使用:

exclude = tuple(['some_non_hstore_field'] + [field['name'] for field in YourModel._meta.get_field_by_name('facilities')[0].schema])

同じことが当てはまりますreadonly_fields

于 2015-03-03T22:08:40.220 に答える