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

时间:2018-03-21 19:23:11

标签: python django wagtail django-taggit

我特别谈论Tag模型,我没有太多经验。代码如下:

@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),
]

Tag模型有两个字段,'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),
]

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.

我如何实现我想要做的事情?

2 个答案:

答案 0 :(得分:0)

要从dropzone继承您的标记气体,您必须创建自定义直通模型。 disableClick文档包含an example on how to create custom tags

答案 1 :(得分:0)

我们可以通过以下技巧来做到这一点: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