Django频道[多媒体示例]:如何设置管理员以启用将房间添加到房间?

时间:2017-04-20 14:59:23

标签: python django django-channels

我正在尝试基于以下示例构建自定义聊天服务器:

channels-examples/multichat/

到目前为止,我已经掌握了基本代码,但现在我希望修改/ admin页面以允许将一个或多个用户添加到房间,而不是让用户“加入”房间。我对Python 2/3和Flask很有经验,但对Django来说还是比较新的,我花了好几个小时试图找到线索或相关代码但到目前为止还没有取得多大成功。

似乎“管理操作”会很有用,调用chat.consumers.chat_join(),我也认为我需要在chat.models的Room类中添加一个'user'字段,但现在我不是确定下一步该怎么做。我已经研究了官方Django文档,示例/频道代码本身以及许多其他网站,但我将不胜感激。

如果其他人处于类似情况,还有几点需要注意:

  1. Django Groups(admin)与channel.Group,
  2. 无关
  3. 用户当前可以“加入”房间,但这是一种非常松散耦合的关系,不会记录在DB(postgres)中。我希望稍后再添加这样的持久性。
  4. 我无法找到任何相关的管理员。例如将任务分配给用户,这让我感到很惊讶。

    提前致谢...

    理查德 PS似乎我只能发布一个链接 - 为此道歉。

1 个答案:

答案 0 :(得分:1)

在models.py.Room中:

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用法允许通过管理页面将用户分配到房间。

非常简单,一旦你知道如何: - )

我仍然需要允许“员工”访问,但这应该很容易。