前提・実現したいこと
djangoでチャットアプリを作ろうと考えています。
二つのテーブルに同時にデータを挿入したいのですが、
この場合createviewを継承して実装できますか?
####具体的な話
ログイン中のユーザーidとチャット部屋のidをそれぞれ外部キーとしてひっぱてきて、Myroomという中間テーブルにデータを挿入したいです。自分の一覧画面に使いたいと考えています。
##わからない点
①二つのテーブルに同時にデータを挿入する方法
Roomテーブルに追加したと同時に、その部屋のpkを取得して、ログイン中のユーザーidと共にMyroomテーブルに追加する方法がわかりません。クラスベースでは可能でしょうか?
②ログインしているユーザーのidの取得方法
Userモデルはuuidをpkとしています。ログインしているユーザーのidはどう取得するのでしょうか。
試しに
views
1class RoomCreate(LoginRequiredMixin,generic.CreateView): 2 """部屋作成しました""" 3 model=Room 4 template_name = 'hoge' 5 form_class=RoomCreateForm 6 7 def post(self, request, *args, **kwargs): 8 login_user_id = self.request.user.id 9 print(login_user_id) 10 return redirect('hoge')
とかくと、
error
1UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list: <class 'roomcreate.models.Room'> QuerySet.
と出てしまいます。
モデル
models
1class User(AbstractBaseUser, PermissionsMixin): 2 3 id = models.UUIDField(default=uuid.uuid4, primary_key=True, editable=False) 4 〜省略〜 5 6class Room(models.Model): 7 title=models.CharField(_('room_title'),max_length=30,blank=False) 8 people=models.CharField(_('最大人数'),default=1,max_length=10,blank=False) 9 10 def get_absolute_url(self): 11 return reverse('hoge', kwargs={'pk':self.pk}) 12 13 14class MyRoom(models.Model): 15 room_id = models.ForeignKey(Room, on_delete=models.PROTECT) 16 user_room = models.ForeignKey(User, on_delete=models.PROTECT) 17
views
1 2class RoomCreate(LoginRequiredMixin,generic.CreateView): 3 〜ここがわからない〜 4
どんな些細なアドバイスでもありがたいです。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。