Posted at

DjangoのViewでデータを追加する時 Error:save() missing 1 required positional argument: 'self'

DjangoのViewでデータを追加する時、例えばフォームから入力してデータを追加するのではなく、

View上でDjangoモデルに直接データを追加したい時がある。

これをやろうとした時に

少し詰まったのでメモしておく。

下のコードにあるように、FavoriteというDjangoモデルにuserとfavoriteのフィールドがあり、

そこにLikeしたユーザとその投稿の記事を紐づけたい時、初めはFav=Favoriteとしていた為、

エラーが生じていた。修正案としてFav=Favorite()としてインスタンスを引き渡すと無事に解決出来た。


qiita.rb

def like(request):

Fav = Favorite()
Fav.user = request.user
Fav.favorite = post
Fav.save()

また、こちらの記事にも

同じような事が記載されている。

https://stackoverflow.com/questions/46907511/typeerror-save-missing-1-required-positional-argument-self