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