繁体   English   中英

如何在Django / PyAMF和Flex之间映射字段名称?

[英]How can I map field names between Django/PyAMF and Flex?

例如,使用我的UserProfile模型:

class UserProfile(models.Model):
  user      = models.ForeignKey( User, unique=True )
  blurb     = models.CharField( max_length=200, null=True, blank=True )
  public    = models.BooleanField( default=True )
  ...

因此,我最终得到了一个名为“ public”的字段。 因为它是关键字,所以这在ActionScript中不会生效。 更改很烦人,因为它在django-profile软件包中包含了多层功能。 因此,我不得不在Flex端将其重命名:

[RemoteClass(alias="...")]
[Bindable]
public class UserProfile
{
    public function UserProfile()
    {
    }
    public var id:int;
    public var blurb:String;
    public var _public:Boolean;
    ...

在交易的哪一侧,我可以在哪里声明“远程现场公共翻译为本地现场_public”? 我在PyAMF方面搞砸了ClassAliases,但是很快就变得混乱了,并且没有文档很好地做到这一点。 而Flex方面的文档似乎表明我可以覆盖一个“处理传入请求”处理程序,但是我认为它已经在com对象中填充了字段之后发生了,因此将它们放到地板上,因为适当的场不在那里,给我留下了一堆:

ReferenceError: Error #1056: Cannot create property

在Flex跟踪中...

为了支持这一点,PyAMF需要在字段之间提供同义词映射。 在此之前,您可以使用IExternalizable (尽管很笨拙):

class UserProfile(model.Model):
  user      = models.ForeignKey( User, unique=True )
  blurb     = models.CharField( max_length=200, null=True, blank=True )
  public    = models.BooleanField( default=True )

  class __amf__:
    external = True

  def __writeamf__(self, output):
    output.writeObject(self.id)
    output.writeObject(self.blurb)
    output.writeObject(self.public)

  def __readamf__(self, input):
    self.id = input.readObject()
    self.blurb = input.readObject()
    self.public = input.readObject()

带有相应的Flex代码:

[RemoteClass(alias="...")]
[Bindable]
public class UserProfile implements IExternalizable
{
  public function UserProfile()
  {
  }
  public var id:int;
  public var blurb:String;
  public var _public:Boolean;

  public function writeExternal(output:IDataOutput)
  {
    output.writeObject(id);
    output.writeObject(blurb);
    output.writeObject(_public);
  }

  public function readExternal(input:IDataInput)
  {
    id = input.readObject();
    blurb = input.readObject();
    _public = input.readObject();
  }
}

注意我还没有测试上面的代码,但原则上应该可以工作。

顺便说一句,您能详细介绍一下有关文档的哪些内容吗? 我想让新用户更清楚地了解这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM