2012-07-25 57 views
6

我想添加一个自定义字段到我的Django项目,使用South。正因为如此,我试着(第一次)写introspection rules for South。我相信我的情况是最简单的,因为我只是扩展CharField。具体做法是:添加简单的自定义字段到Django - 如何写南内省规则

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 color picker model field 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,我已经尝试puttin代码在我的models.py文件的顶部定义自定义字段。但是这没有奏效。

回答

7

简单的回答:是的,代码应该放在字段被定义的models.py文件中。正确的代码是:

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

不知道为什么我把项目名称放在那里。

1

你必须确保文件的路径是正确的。你提到的那个看起来与我正在使用的类似,但路径是:

add_introspection_rules([], ["^colors\.fields\.ColorField"]) 
相关问题