如何在具有ForeignKey类型字段的Django模型中进行Websocket绑定?

时间:2019-03-01 12:45:46

标签: django django-channels

假设我有一个模型,其中一个字段是ForeignKey类型。

class House(models.Model):
    house_name = models.CharField(max_length=120)
    tenant = models.ForeignKey('Tenant',on_delete=models.CASCADE)

class Tenant(models.Model):
    name = models.charField(max_length=120)
    married = models.BooleanField(default=False)
    phone = models.CharField(max_length=10)

我想使用WebsocketBinding绑定模型House的事件。所以我写下了以下内容

class HouseBinding(WebsocketBinding):
    model = House
    stream= "houseStream"
    fields = ["__all__"]

    @classmethod
    def group_names(cls, *args, **kwargs):      
        return ["binding.values"]

    def has_permission(self, user, action, pk):
        return True    

现在每当创建或更新或删除House模型的对象时,有效负载就会发送到连接的客户端。我在routing.py中添加了Demultiplexer路由,并在consumers.py中添加了WebsocketDemultiplexer类。现在假设我是在服务器端使用具有如house_name,tenant_name,tenant_married_status和tenant_phone_number的字段的形式创建,更新和删除房屋模型的对象。

我正在使用以下代码在客户端监听这些事件。

  var webSocketBridge = new channels.WebSocketBridge();
  webSocketBridge.connect(ws_path);
  webSocketBridge.listen();
  webSocketBridge.demultiplex('houseStream', function(payload, streamName) 
   {  
       console.log(payload.data.house_name); //I am getting correct value for this.
       console.log(payload.data.tenant.name);  //getting 'undefined' for this
       console.log(payload.data.tenant.married); //getting 'undefined' for this
       console.log(payload.data.tenant.phone); //getting 'undefined' for this
    });

能否请您告诉我为什么每次尝试获取“ Tenant”模型中存储的任何值时都会得到“ undefined”。如果我做错了事或有其他处理这些情况的方法,请作为我的指导。我在互联网上找不到任何资源来解决此问题

预先感谢

0 个答案:

没有答案