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