【问题标题】:Adding Simple Custom Field to Django -- How to Write South Introspection Rules向 Django 添加简单的自定义字段——如何编写 South Introspection 规则
【发布时间】:2012-07-25 03:29:24
【问题描述】:

我正在尝试向我的 Django 项目中添加一个使用 South 的自定义字段。因此,我正在尝试(第一次)写introspection rules for South。我相信我的案例是最简单的,因为我只是在扩展一个 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 color picker model field 的 Django sn-p,供感兴趣的人使用。

由于我没有添加任何新属性,我相信我只需要添加这些代码行:

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 文件顶部。但这并没有奏效。

【问题讨论】:

    标签: django django-admin django-south


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您必须确保文件的路径正确。你提到的那个看起来和我用的很相似,但是路径是:

      add_introspection_rules([], ["^colors\.fields\.ColorField"])
      

      【讨论】:

        猜你喜欢
        • 2011-03-11
        • 2011-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-16
        相关资源
        最近更新 更多