2017-07-11 50 views
1

下面是一个包含多个标签的模型。如何从tags_en中检索数据? tags.names()的作品很好,但不tags_en.names()也不tags_en.all()Django-taggit。模型中的多标签。检索数据

from taggit.models import GenericUUIDTaggedItemBase, TaggedItemBase, TagBase 
from taggit_selectize.managers import TaggableManager 

class UUIDTaggedItem(GenericUUIDTaggedItemBase, TaggedItemBase): 
    class Meta: 
     verbose_name = _("Tag") 
     verbose_name_plural = _("Tags") 


class BaseTag (TagBase): 
    pass 


class UUIDTaggedItemEn (GenericUUIDTaggedItemBase, TaggableManager): 
    tag = models.ForeignKey(BaseTag) 


class Item(models.Model): 
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) 
    tags = TaggableManager(blank=True, through=UUIDTaggedItem) 
    tags_en = TaggableManager(blank=True, through=UUIDTaggedItemEn) 

错误消息:

FieldError在/管理/项目/ item/

无法将关键字'None'解析为字段。选项包括:类别,身份证, 项目,名称,蛞蝓,taggroup,uuidtaggeditemen

回答

1

首先你应该添加一个管理器属性的其他类像

class UUIDTaggedItemEn (GenericUUIDTaggedItemBase, TaggableManager): 
    tag = models.ForeignKey(BaseTag) 
    objects = = models.Manager() 

,那么你可以调用一样使用过滤器

tags_en.objects.filter(id=...) 
tags_en.objects.all() 

的问题是与多个taggablemanagers你打电话给他们,虽然其他类和鸥的时候去接受你需要调用这些类的对象。希望有帮助,如果不发表评论

+0

现在它是:'_TaggableManager'对象没有属性'objects' –

+0

当你添加对象到其他类时,你是否./manage.py makemigration然后./manage.py迁移? – hansTheFranz

+0

我重新创建了表格。在makemigrations/migrate期间没有任何问题。 –