【问题标题】:Django-taggit insertingDjango-taggit 插入
【发布时间】:2013-09-02 22:03:30
【问题描述】:

我的模型定义了一个字段,如

keywords = TaggableManager(_('Keywords'), blank=True)

从视图中我需要在 for 中使用 get_or_create

***
with transaction.commit_on_success():
    # Inserting obj_parsed
    defaults = {
        'owner': user,
        'title': obj.title,
        'abstract': obj.abstract,
        #'keywords': [kw for kw in obj.keywords],
        'url': obj.url,
    }

    obj_instance, created = Obj.objects.get_or_create(
                                title=obj.title, defaults=defaults)
    if not created:        
        result['error'] = _('URL already in the repository') 
        return result

obj.keywords 是一个列表(可以为空),但 get_or_create 给我错误“TypeError: 'keywords' is an invalid keyword argument for this function”

我该如何解决这个问题?

我不想做

mymodel = Obj(**defaults)
mymodel.save()
mymodel.keywords.add([kw for kw in obj.keywords])

谢谢!

【问题讨论】:

    标签: django django-taggit


    【解决方案1】:

    我刚刚遇到了类似的问题,并查看了taggit tests。我唯一要做的就是在创建后添加标签,如下所示:

    defaults = {
        'owner': user,
        'title': obj.title,
        'abstract': obj.abstract,
        'url': obj.url,
    }
    obj_instance, created = Obj.objects.get_or_create(title=obj.title, defaults=defaults)
    obj_instance.add(*obj.keywords)
    

    【讨论】:

      猜你喜欢
      • 2012-10-07
      • 2019-03-12
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多