在djang中为m2m关系使用TaggableManager

2024-09-27 19:22:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用TaggableManager()在django应用程序中添加我的表单中的标记,但这似乎不起作用。在

class UserBookmark(models.Model):

    user = models.ForeignKey(User)
    bookmark = models.URLField()
    tag = TaggableManager()

    def __str__(self):
        return '%i %s %s'%(self.id,self.user,self.bookmark)

我的html模板:

^{pr2}$

在视图.py公司名称:

def save_tag(request):

    tagslist = request.POST.getlist("tag")
    bookmark = request.POST.get("bookmark")
    obj=UserBookmark.objects.get(bookmark = bookmark)
    user = request.user.pk
    obj.tag = tagslist
    obj.save()

当我遇到这个问题时

UserBookmark.objects.filter(tag__name__in = ['java'])

我有空套, 虽然我有java标签的记录。在

以前我的UserBookmark模型标记属性是CharField

tag = models.CharField(max_length = 100)

但这并没有起作用,因为标签具有多对多的关系,就像书签可以有很多标签一样,所以CharField不起作用。在

有人能告诉我这里需要纠正什么吗?在


Tags: 标记selfobjmodelsrequestsavedeftag
1条回答
网友
1楼 · 发布于 2024-09-27 19:22:15

您必须使用^{}在ManyToMany字段中添加项

def save_tag(request):
   # Use get() instead of getlist() beacuse in request it is a string 'Python,Data Science' not array
   tagslist = request.POST.get("tag")
   # Use split to make it a list
   tagslist = [str(r) for r in taglist.split(',')]
   ...
   # use add to add item in ManyToMany field.
   obj.tag.add(*tagslist)
   obj.save()

现在您的查询将正常工作。在

相关问题 更多 >

    热门问题