2013-07-25 63 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)