2016-07-07 3 views
2

Djangoのモデルでhstore.DictionaryField()を使用してパラメータを渡さずにDjanoの管理者にモデルを登録すると、管理インターフェースで新しいキー値の行を作成することができます。Django HStore DictionaryFieldをスキーマとスキーマレスモードで同時に使用するには?

スキーマモードで同じフィールドを使用するとhstore.DictionaryField(schema=['some schema description'])私はschemaパラメータで説明されている固定量のフィールドを取得します。私は同時に、これらの機能の両方を持つことができ

、すなわち、同様に新しいフィールドを追加することができながら、スキーマの記述に記載されている特定のタイプのいくつかの固定フィールドがありますか?

UPD

スキーマや他のものスキーマレスで DictionaryFieldのいずれかを使用しますが、それはほとんど最適なソリューションであることはできなかったこれを解決する一つの方法。

答えて

0

答えはノーである、あなたはhstoreのライブラリの現在の実装の両方を持つことはできません。 (これはgithubの上の彼らの源からである)init関数を見てみましょう:

class DictionaryField(HStoreField): 
    description = _("A python dictionary in a postgresql hstore field.") 

    def __init__(self, *args, **kwargs): 
     self.schema = kwargs.pop('schema', None) 
     self.schema_mode = False 
     # if schema parameter is supplied the behaviour is slightly different 
     if self.schema is not None: 
      self._validate_schema(self.schema) 
      self.schema_mode = True 
      # DictionaryField with schema is not editable via admin 
      kwargs['editable'] = False 
      # null defaults to True to facilitate migrations 
      kwargs['null'] = kwargs.get('null', True) 

     super(DictionaryField, self).__init__(*args, **kwargs) 

あなたは、スキーマが設定されている場合、そのフィールドの編集可能な引数が何をしている、falseに設定されていることを見ることができますDjangoの管理者は、管理UIの値を編集できるかどうかを調べます。

残念ながら、あなたはそれを継承する独自のクラスを作成することによって自分自身をオーバーライドすることも、プルリクエストを開くことも、自分のgithubページで問題を公開して、誰かがそれを得ることを願うこともできます。

+0

よくhstoreは既にあまりにも強力に見えました。通知ありがとう。 –

関連する問題