django / taggit - 错误:MyData对象需要具有主键值才能访问其标记

时间:2011-04-05 02:21:49

标签: django django-forms django-views django-taggit

我正在尝试使用django-taggit(see)。这就是我的代码中的内容:

models.py

class MyData(models.Model):
    title = models.CharField(blank=True, max_length=50)
    .....
    tags = TaggableManager()

views.py

g = MyData(title=f_title)   
g.tags.add( "mytag" )
g.save()

出于某种原因,当我试图保存标签和数据时,我收到了这个错误:

  

MyData对象需要有一个主要对象   在你可以访问他们之前的关键值   标签

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:5)

使用MyData.objects.create(title=f_title)将其保存到数据库并拥有ID 然后访问tags

g = MyData.objects.create(title=f_title)  
g.tags.add( "mytag" )
g.save()

答案 1 :(得分:2)

更改订单。先保存 - 分配一个主键 - 然后搞乱标签。

答案 2 :(得分:2)

如错误所示,在添加标记之前,MyData对象必须具有主键。这是因为标签是通过多对多关系存储的,您需要ID才能将其链接到单独的表中。简单的解决方案是:

g = MyData(title=f_title)   
g.save()
g.tags.add( "mytag" )
g.save()