2017-04-20 13 views
1

私は、次の例に基づいて、カスタムチャットサーバーを構築しようとしています:Django Channels [multichat example]:ユーザーを部屋に追加できるようにするにはどうすれば管理者を設定できますか?

channels-examples/multichat/

はこれまでのところ、私は基本的なコードの作業を持っているが、今、私は/管理ページ(複数可)を変更したいですユーザが部屋に参加するのではなく、1人以上のユーザを部屋に追加することができます。私はPython 2/3とFlaskで経験はありますが、Djangoについてはかなり新しいです。手がかりや関連するコードを見つけようと数時間を費やしましたが、これまでのところ成功はありませんでした。

chat.consumers.chat_join()を呼び出すためには、「管理者の操作」が便利なようですが、chat.modelsのルームクラスに「ユーザー」フィールドを追加する必要があると推測しています。次に何をするかわからない。私は公式のDjangoのドキュメント、サンプル/チャンネルコード自体、その他多くのサイトを研究しましたが、助けていただければ幸いです。

誰にも似たような状況にある場合には注意すべき点がいくつかあります:

  1. ジャンゴグループ(管理者)channel.Groupとは何の関係もない、
  2. ユーザーができ、現在 "部屋に参加しますが、それはDB(ポストグル)に記録されていない非常に疎結合の関係です。私は後でそのような永続性を追加したいと思います。

関連する管理者が見つかりませんでした。ユーザーにタスクを割り当てるなどの例がありました。そのために謝罪を - 事前に

おかげで...

リチャード PSは私が1つのリンクのみを投稿することができているようです。 models.py.Roomで

+0

ルームをテーブルと考え、要求しアクセスするすべてのメンバーを記録します。だから、次に何をすべきかについて明確なイメージを持つことができます。今度は "管理者がその部屋にチャットできるようにする"かどうかを選択フィールド "Enable/Disable = default"で行い、コンシューマー機能のすべてのメッセージを処理すると、 –

+0

応答してくれてありがとうございますが、[このDjangoチュートリアル](https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Models)を読んだら、私自身の解決策を今見つけました。 –

答えて

1

owner = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)

utils.py.get_room_or_errorにおいて():

username = user.get_username() 
if username != str(room.owner): 
    raise ClientError("ROOM_ACCESS_DENIED") 

管理者を介して部屋にユーザのForeignKeyの使用許可の割り当てページ。

非常に簡単あなたはどのように:-)

を知っていたら、本当に、私はまだ "スタッフのアクセスを許可する必要があるが、それは簡単なはずです。

関連する問題