Я использую 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()
{
}
}
}
Когда я вызываю сервис, я получаю обратно и массив анонимных объектов, хотя я сделал register_class в python и RemoteClass во Flex. Так что это не имеет смысла для меня. Должно быть, я что-то не так делаю?
Играя с этим, я пробовал несколько разных вещей. Единственное, что работало, это итерация массива во Flex и приведение элементов к объектам SouvenirAct следующим образом:
private function onResult(r:Array):void
{
for each(var o:Object in r)
{
var c:SouvenirAct = o as SouvenirAct;
}
}
Когда я делаю это во Flex, я получаю, что мои объекты SouvenirAct набираются так, как они должны быть, НО тогда все дочерние объекты-сувениры становятся нулевыми. Поэтому, когда я принудительно приводю объекты SouvenirAct в возвращаемом результате, я получаю нулевое значение для дочерних свойств, которые строго типизированы.
Кто-нибудь видел это раньше? Есть ли другой способ отображения классов?