6

Southを使用するDjangoプロジェクトにカスタムフィールドを追加しようとしています。このため、私は(初めて)南の内省ルールを書こうとしています。私はCharFieldを拡張しているだけなので、私の場合は可能な限り単純だと思います。具体的には:

class ColorField(models.CharField):
    def __init__(self, *args, **kwargs):
        kwargs['max_length'] = 10
        super(ColorField, self).__init__(*args, **kwargs)

    def formfield(self, **kwargs):
        kwargs['widget'] = ColorPickerWidget
        return super(ColorField, self).formfield(**kwargs)

これは、興味のある人のためのjQueryカラーピッカーモデルフィールドと呼ばれるDjangoスニペットからのものです。

新しい属性を追加していないので、次のコード行を追加するだけでよいと思います。

from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^myproject\.myapp\.models\.ColorField"])

おそらく明らかですが、どこに行けばいいのでしょうか。また、これが私が正しくしなければならないすべてであるという私の仮定はありますか?

ここに投稿されたいくつかの質問を確認しましたが、ほとんどははるかに複雑な内省を扱っています。

http://south.readthedocs.org/en/latest/customfields.html#where-to-put-the-codeに従って、カスタムフィールドが定義されているmodels.pyファイルの先頭にコードを配置してみまし。しかし、これはうまくいきませんでした。

4

2 に答える 2

7

簡単な答え:はい、コードはフィールドが定義されたmodels.pyファイルに配置する必要があります。正しいコードは次のとおりです。

from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^myapp\.models\.ColorField"])

なぜそこにプロジェクト名を入れていたのかわかりません。

于 2012-07-25T03:45:22.740 に答える
1

ファイルへのパスが正しいことを確認する必要があります。あなたが言及しているものは私が使用しているものと似ていますが、パスは次のとおりです。

add_introspection_rules([], ["^colors\.fields\.ColorField"])
于 2012-08-20T20:26:42.847 に答える