[英]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.