Python 如何向Django中的代理模型添加额外字段?

Python 如何向Django中的代理模型添加额外字段?,python,django,wagtail,django-taggit,Python,Django,Wagtail,Django Taggit,我特别谈论的是标签模型,我对它没有太多经验。代码如下所示: @register_snippet class ArticleTag(index.Indexed,Tag): class Meta: proxy=True search_fields = [ index.SearchField('name', partial_match=True), index.SearchField('slug', partial_match=True), ] @register_sni

我特别谈论的是标签模型,我对它没有太多经验。代码如下所示:

@register_snippet
class ArticleTag(index.Indexed,Tag):

class Meta:
    proxy=True

search_fields = [
    index.SearchField('name', partial_match=True),
    index.SearchField('slug', partial_match=True),
]
@register_snippet
class ArticleTag(index.Indexed,Tag):

class Meta:
    proxy=True

search_fields = [
    index.SearchField('name', partial_match=True),
    index.SearchField('slug', partial_match=True),
]

merge_to = models.CharField(max_length=500, blank=True, null=True)

panels = [
    FieldPanel('name'),
    FieldPanel('slug'),
    FieldPanel('type'),
]
标记模型有两个字段,“name”和“slug”。但现在我想添加第三个名为“type”的自定义字段,它只是一个CharField

我试着这样修改它:

@register_snippet
class ArticleTag(index.Indexed,Tag):

class Meta:
    proxy=True

search_fields = [
    index.SearchField('name', partial_match=True),
    index.SearchField('slug', partial_match=True),
]
@register_snippet
class ArticleTag(index.Indexed,Tag):

class Meta:
    proxy=True

search_fields = [
    index.SearchField('name', partial_match=True),
    index.SearchField('slug', partial_match=True),
]

merge_to = models.CharField(max_length=500, blank=True, null=True)

panels = [
    FieldPanel('name'),
    FieldPanel('slug'),
    FieldPanel('type'),
]
但是,服务器会产生:

ERRORS:
?: (models.E017) Proxy model 'ArticleTag' contains model fields.

如何实现我要做的事情?

要从
TagBase
继承您的标记气体,您必须创建一个自定义模型。django taggit的
documentation已经发布。

我们可以在下面的技巧中实现这一点:p

class Model(object):
    '''
    Skip extra field validation "models.E017"
    '''

    @classmethod
    def _check_model(cls):
        errors = []
        return errors

@register_snippet
class ArticleTag(Model, index.Indexed,Tag):
    class Meta:
        proxy=True