我的问题如下:
我正在为机器学习问题实施标签系统。 简而言之:复杂的对象应该获得简单的标签信息(如标签)。 每个对象应该只有一个标签,标签集是有限的和静态的。 (例如:我想将一个动物对象的所有属性标记为CAT,DOG等信息。)
所以我有一个项目对象。我希望将其保存为带有我的标签对象(myAnimal,label)的图案。该对象应仅携带一个信息(例如DOG)。我怎么能做到这一点? 我想到了一个包含一些布尔值的对象和我想要的布尔值,但这似乎不是一个很好的解决方案,因为可以设置多个布尔值。
我搜索了一个简单的类似枚举的解决方案,但没有发现任何令人满意的结果。
如果你能在这里帮助我会很好;)
答案 0 :(得分:1)
由于您的标签是静态的并且是预先定义的:
TAGS = ((1,'DOG'),(2,'CAT'),(3,'HORSE')) # and so on
class MyThing(models.Model):
name = models.CharField(max_length=200)
tag = models.IntegerField(choices=TAGS)
使用此模型,您的东西只能有一个标记,您可以获得对象的关联标记:
foo = MyThing.objects.order_by('?')[0] # get some random object
print 'My object is a ',foo.get_tag_display()
答案 1 :(得分:0)
有一些关系的简单模型怎么样?
class LabeledItem(models.Model):
my_object= models.OneToOneField(Item)
label = models.CharField()
label属性也可以是OneToOneField,例如Label模型,其名称为field属性。