zoukankan      html  css  js  c++  java
  • django传递嵌套对象给flex前端的方法(原创)

    问题的描述:在后台,python定义了如下两个模型。
      class Users(models.Model):
          username = models.CharField(primary_key = True, max_length = 30)
          password = models.CharField(max_length = 30)
          nickname = models.CharField(max_length = 30)

          def __unicode__(self):
              return self.username

    class Diary(models.Model):
          user       = models.ForeignKey(Users)
          Title      = models.CharField(max_length = 100)
          Content    = models.CharField(max_length = 1000) #no restriction
          Type       = models.CharField(max_length = 30)
          Attri      = models.CharField(max_length = 10)
          PublicDate = models.DateField()

          def __unicode__(self):
              return self.Title

    可以看出,这里Diary模型引用了user模型。现在通过在后台检索Diary后,想返回diary的对象集合给Flex前台。
    解决方法:这里切记不要直接返回Diary的对象,比如return Diary.objects.get(user = u)//u = User.objects.get(username = 'caihaibin')
    这样返回给flex前端后,会发现user属性为空。
      var obj:Object = re.result as Object;
        for (var i:String in obj)   //这句话是遍历obj的所有属性,i一定要为String类型
        {
            if( i == 'user')        //如果为user属性
            {
                for(var j:String in obj[i])  //遍历user的属性
                {
                    trace(j, obj[i][j]);
                }
            }
            trace(i, obj[i]); //i属性名,obj[i]属性值
        }
    //输出结果如下:
    Title i love you
    Content caihaibin love huangzhaoying
    Type abc
    id 1
    Attri private
    nickname David Cai
    username caihaibin
    password 860105
    user null(可以发现。。这里输出的属性为空,这是因为我们直接返回的是Diary的对象,而在Diary对象中user只是一个引用,比如可能只是个指针)
    PublicDate Fri Aug 21 08:00:00 GMT+0800 2009

    正确的方法:return Diary.objects.select_related().filter(user = u),重新trace,可得:
    Title i love you
    Content caihaibin love huangzhaoying
    Type abc
    id 1
    Attri private
    nickname David Cai  //哈哈,得到正确的结果。
    username caihaibin
    password 860105
    user [object Object]
    PublicDate Fri Aug 21 08:00:00 GMT+0800 2009


    还有,再次重申一下,如果碰到Http:State:500的错误,一定是程序的错误!我昨晚也碰到这个问题,检查了一遍又一遍我的程序,没有发现任何问题,结果却一直错误。所以我认为django不能够返回嵌套模型给前台,但是转念一想,Django这么强大,没理由不支持这种这么简单的操作啊。。。。最后,费了九牛二虎之劲,终于在程序中找到了那个隐蔽的错误。
                                          ----David Cai 09-08-22晨于金山公司
  • 相关阅读:
    去掉安装程序被挂起,要重新启动电脑
    为什么要关闭数据库连接,可以不关闭吗?
    读取Excel异常定义了过多字段的解决方法
    关于打开ILDASM的方法
    SQL Server数据类型
    C++的MFC,与C#的.NET
    javascript数据类型
    日志记录组件[Log4net]详细介绍
    Xml的读取
    yield让代码更加简洁
  • 原文地址:https://www.cnblogs.com/xingluzhe/p/1551817.html
Copyright © 2011-2022 走看看