私はユーザーがお互いをフォローするオプションを与えたい私のViews.py困難
class FollowToggle(RedirectView):
def get_redirect_url(self,*args,**kwargs):
username = self.kwargs.get("username")
userprofile = self.kwargs.get("userprofile")
user = self.request.user
obj = get_object_or_404(UserProfile, user=user)
if user.is_authenticated():
if user in obj.follow.all():
obj.follow.remove(user)
else:
obj.follow.add(user)
url_ = obj.get_absolute_url()
return url_
でクラスに問題があります。私は後でAPIで使うこの呼び出しを持っています。 (すべてがセットアップされ、実行されていますが)今はすべてそれはそれに従っています。したがって、ユーザーがhttp://127.0.0.1:8000/profiles/testuser/followを実行している場合、それは最後のページにリダイレクトされ、モデルのデータが更新されますが、追跡されたユーザーはユーザー自身です。 問題はobj.follow.remove(user)であるとわかりました。ここで 'user'は 'username'でなければなりませんが、これは私にエラー(10( 'testuser'を基にしたint()の無効なリテラル)を投げます。
誰かがこれを解決する方法を知っている場合は、私に知らせてください。
Models.py:
class UserProfile(models.Model):
follow = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True,default=1, related_name='follow')
def get_follow_url(self):
return reverse("profiles:follow-toggle", kwargs={"user": self.user})
def get_api_follow_url(self):
return reverse ("profiles:follow-api-toggle", kwargs={"user": self.user})
def get_absolute_url(self):
return reverse("profiles", kwargs={"username": self.user})
あなたの質問は少し混乱しています/ testuser/follow'は1つのように見えます。 – Alasdair