【问题标题】:Cannot freeze field无法冻结字段
【发布时间】:2014-08-28 07:55:20
【问题描述】:

执行:

python ./mamage.py schemamigration --initial<br>

它给了我一个错误:

! Cannot freeze field 'exam.question.tags'
! (this field has class taggit_autocomplete_modified.managers.TaggableManagerAutocomplete)    
! South cannot introspect some fields; this is probably because they are custom
! fields. If they worked in 0.6 or below, this is because we have removed the
! models parser (it often broke things).
! To fix this, read http://south.aeracode.org/wiki/MyFieldsDontWork

自定义字段类:

from django.utils.translation import ugettext_lazy as _

from taggit.forms import TagField
from taggit.managers import TaggableManager

from widgets import TagAutocomplete        

class TaggableManagerAutocomplete(TaggableManager):
    def formfield(self, form_class=TagField, **kwargs):
        field = super(TaggableManagerAutocomplete, self).formfield(form_class, **kwargs)
        field.widget = TagAutocomplete()
        return field

我的问题是如何在model.py中定义( "null": ["null", {{"ignore_if": "name"}],)这一行。

from south.modelsinspector import add_introspection_rules
from taggit_autocomplete_modified.managers import TaggableManagerAutocomplete
    add_introspection_rules(
        [
            (
                (TaggableManagerAutocomplete, ),
                [],
                {
                    "null": ["null", {{"ignore_if": "name"}],
                },
            ),
        ],
        ["^taggit_autocomplete_modified\.managers\.TaggableManagerAutocomplete"])

如果不定义这一行,我会得到另一个错误:

TypeError: __init__() got an unexpected keyword argument 'null'

south.aeracode.org/ticket/422

【问题讨论】:

  • 曾经解决过这个问题吗?现在正好遇到了这个问题(也试图覆盖 TaggableManager)

标签: python django django-south


【解决方案1】:

https://django-taggit.readthedocs.org/en/latest/api.html 您可以继承 _TaggableManager(注意下划线)来添加方法或功能。 TaggableManager 为您的自定义类采用可选的 manager 关键字参数,如下所示:

class Food(models.Model):
    # ... fields here
    tags = TaggableManager(manager=_CustomTaggableManager)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-19
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    相关资源
    最近更新 更多