我在创建聊天室方面需要帮助,就像我进入特定房间一样(如“Python 社区”、“DjangoDev”等)。我使用的软件包:
Django==1.9.7,
channels==1.1.8,
asgi-redis==1.4.3
Run Code Online (Sandbox Code Playgroud)
我使用组名的 slug 字段,我在 Channels find group 中过滤这个 slug 并在每次新消息到来时调用 save 。所以问题的主要原因是 Channels 抛出一个错误,说组名无效:
(venv) alibek@OverlorD:~/Desktop/my_porject/RedProject$ ./manage.py runworker
2018-03-17 13:59:51,607 - INFO - runworker - Using single-threaded worker.
2018-03-17 13:59:51,608 - INFO - runworker - Running worker against channel layer default (asgi_redis.core.RedisChannelLayer)
2018-03-17 13:59:51,608 - INFO - worker - Listening on channels chat-messages, http.request, websocket.connect, websocket.disconnect, websocket.receive
Not Found: /home/
Not Found: /favicon.ico
Traceback (most recent call last):
File "./manage.py", line 14, in <module>
execute_from_command_line(sys.argv)
File …Run Code Online (Sandbox Code Playgroud) 我不需要嵌套的创建/更新操作。我只想将pk创建的对象写入 FK/M2M 字段,并在创建主对象后从该 FK/M2M 字段获取对象。不是它的主键。
例如,我有ValueRel和Value模型。这就是它们的关系:
class ValueRel(BaseModel):
table = models.ForeignKey(
Table,
on_delete=models.PROTECT,
)
object_id = models.CharField(max_length=36)
@property
def related_object(self):
related_model = self.table.get_model()
related_object = related_model.objects.filter(pk=self.object_id).first()
return related_object
class Value(BaseModel):
profile = models.ForeignKey(
Profile,
on_delete=models.SET_NULL,
blank=True,
null=True,
related_name="app_values",
)
# I want to write into this field `pk` and get its object
value_rel = models.ManyToManyField(
ValueRel,
blank=True,
related_name="values",
)
...
Run Code Online (Sandbox Code Playgroud)
ValueRel创建 的实例并将其写入value_rel的实例后Value,我想获取ValueRel类似对象的实例。
实际结果(来自 API 的 JSON 响应) …