2013-07-25 41 views
0

我的模型定义像Django的taggit插入

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

从一个视野我需要使用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:'关键字'是这个函数的无效关键字参数”

我该如何解决这个问题?

我不想做

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

谢谢!

回答

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)