0

私のモデルは次のような1つのフィールドを定義します

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])

ありがとう!

4

1 に答える 1

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)
于 2013-09-02T14:03:30.973 に答える