774さんの質問が少し概要的なので、
状況が以下のようであると類推してサンプルコードを記述しました。
1.django上に登録したモデルにフィールドとして、お気に入りのページを保持できるようにしたい。
2.Update処理をモデルの変化として認識している。
3.ajax通信でデータベースへの変更の手段が分からず困っている。
上記を前提として、まず3番ですが
ajaxでの通信自体はjqueryで行えるということですので、
django rest_frameworkを使用することをお勧めします。
rest_frameworkはdjango内のアプリとapi通信ができるようにするものなので、
こちらの使い方についてはご自身で調べてみてください。
お話しから774さんのモデルは最低限下記のように定義されていると推測いたしました。
python
1class Profile(models.Model):
2 user = models.OneToOneField(settings.AUTH_USER_MODEL)
3 favorite = models.ManyToManyField(Thread,blank=True,null=True)
4
5class Thread(models.Model):
6 author = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
7 title = models.TextField()
8 #その他のコンテンツ
あとは、apiを通してrequestを送ったユーザーのUserProfieのfavorite_threadにスレッドを追加すれば、
目的が達成できると思います。
提示されている情報が少なく、状況が不透明ですのであくまで一例ですが下記のようにviewを作成するのはいかがでしょか?
python
1from rest_framework.decorators import api_view
2from rest_framework.response import Response
3
4@api_view()
5def toggle_favorite_thread(request,pk):
6 thread = get_object_or_404(Thread,pk=pk)
7 if thread in request.user.profile.favorite.all():
8 request.user.profile.favorite.remove(thread):
9 return Response({"message":"removed"})
10 else:
11 request.user.profile.favorite.add(thread):
12 return Response({"message":"added"})
あとは、jqueryのajaxのsuccess内にDOM操作の処理を記述すれば想定されている処理になるのではないかと思います。