我正在使用 Pyamf 作为我的 Flex 应用程序的后端,并且我看到了一些与强类型类的映射有关的奇怪问题。
这是我要返回的模型
class MilestonActBase(RewardActBase):
def __unicode__(self):
return self.milestone.title
class Meta:
abstract = True
class SouvenirAct(MilestonActBase):
souvenir = models.ForeignKey(Souvenir)
group = models.ForeignKey(Group, blank=True, null=True)
def __unicode__(self):
return self.souvenir.title
这是我在views.py中返回对象的方法:
try:
pyamf.register_class(Souvenir, 'com.rain.dennys.services.vo.Souvenir')
pyamf.register_class(SouvenirAct, 'com.rain.dennys.services.vo.SouvenirAct')
except ValueError:
print "Classes already registered"
@login_required
def get_souvenir_acts(http_request):
user = http_request.user
souvenirActs = SouvenirAct.objects.filter(user=user)
return souvenirActs
这是我的 AS3 课程:
package com.rain.dennys.model
{
[RemoteClass (alias="com.rain.dennys.services.vo.SouvenirAct")]
[Bindable]
public class SouvenirAct extends RewardActBase
{
public var souvenir:Souvenir;
public function SouvenirAct()
{
}
}
}
当我调用该服务时,我会返回匿名对象数组,即使我已经在 python 中完成了 register_class 并在 Flex 中完成了 RemoteClass。所以这对我来说没有意义。我一定做错了什么?
在玩弄它时,我尝试了一些不同的东西。有点奏效的一件事是在 Flex 中迭代数组并将项目转换为 SouvenirAct 对象,如下所示:
private function onResult(r:Array):void
{
for each(var o:Object in r)
{
var c:SouvenirAct = o as SouvenirAct;
}
}
当我在 Flex 中这样做时,我的 SouvenirAct 对象按应有的方式输入,但是子纪念品对象全部为空。因此,当我在返回结果中强制转换 SouvenirAct 对象时,对于强类型的子属性,我会得到 null。
有没有人见过这个?我应该以不同的方式映射类吗?