前提・実現したいこと
Djangoで表示される下記のエラーメッセージの原因を解決したいです。
detailviewで表示した詳細ページ内の【いいね】処理を実装した際に発生しました。
Likeモデルはカスタムユーザーモデルと紐付いて設計しております。
発生している問題・エラーメッセージ
django.core.exceptions.FieldError: Cannot resolve keyword 'like' into field. <~userFields~>
該当のソースコード
urls.py
django
1path("<int:pk>/like/", views.like, name="like"),
models.py
django
1class User(AbstractBaseUser, PermissionsMixin): 2 """カスタムユーザーモデル.""" 3 email = models.EmailField(_('email address'), unique=True) 4 first_name = models.CharField(_('first name'), max_length=30, blank=True) 5 last_name = models.CharField(_('last name'), max_length=150, blank=True) 6 like_num = models.IntegerField(default=0) 7 """他色々省略""" 8 9class Like(models.Model): 10 """いいねモデル""" 11 user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='like_user') 12 date_created = models.DateTimeField(auto_now_add=True)
views.py
django
1def like(request, *args, **kwargs): 2 user = User.objects.get(id=kwargs['user_id']) 3 is_like = Like.objects.filter(user=request.user).filter(user=user).count() 4 # unlike 5 if is_like > 0: 6 liking = Like.objects.get(user__id=kwargs['user_id'], user=request.user) 7 liking.delete() 8 user.like_num -= 1 9 user.save() 10 messages.warning(request, 'いいねを取り消しました') 11 return redirect(reverse_lazy('register:user_profile', kwargs={'user_id': kwargs['user_id']})) 12 # like 13 user.like_num += 1 14 user.save() 15 like = Like() 16 like.user = request.user 17 like.user = user 18 like.save() 19 messages.success(request, 'いいね!しました') 20 return HttpResponseRedirect('register:user_profile', kwargs={'user_id': kwargs['user_id']})
html
1<a href="{% url 'register:like' pk=user.id %}">いいね!</a>{{ user.like_num }}
試したこと
エラーコードを元に調べてみたのですが、
原因がつかめず皆様にご教示して頂きたいです。
よろしくお願いいたします。
あなたの回答
tips
プレビュー