Reputation: 791
My model defines one field like
keywords = TaggableManager(_('Keywords'), blank=True)
From view I need to use get_or_create in a for
***
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 is a list (it can be empty) but get_or_create gives me the error "TypeError: 'keywords' is an invalid keyword argument for this function"
How can I solve this?
I don't want to do
mymodel = Obj(**defaults)
mymodel.save()
mymodel.keywords.add([kw for kw in obj.keywords])
Thanks!
Upvotes: 0
Views: 179
Reputation: 898
I just had a similar problem and looked into the taggit tests. The only thing I got working is adding the tags after creation like so:
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)
Upvotes: 1