0

我的问题如下:

我正在为机器学习问题实施标签系统。所以简而言之:一个复杂的对象应该得到一个简单的标签信息(如标签)。每个对象应该只有一个标签,并且标签集是有限且静态的。(例如:我想将一个动物对象的所有属性标记为信息 CAT、DOG 等)

所以我有一个项目对象。我想将其保存为带有我的标签对象之一(myAnimal,标签)的元组。这个对象应该只携带一个信息(例如 DOG)。我怎样才能做到这一点?我想到了一个包含一些布尔值的对象,并且我想要设置一个布尔值,但这似乎不是一个好的解决方案,因为可以设置多个布尔值。

我搜索了一个简单的类似枚举的解决方案,但没有发现任何令人满意的结果。

如果你能在这里帮助我,那就太好了;)

4

2 回答 2

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()
于 2012-07-25T12:56:27.073 回答
0

有一些关系的简单模型呢?

class LabeledItem(models.Model):
   my_object= models.OneToOneField(Item)
   label = models.CharField()

label 属性也可以是 OneToOneField,例如具有名称作为字段属性的 Label 模型。

于 2012-07-25T12:53:07.833 回答