2009-05-13 2 views
2

저는 PyAmf를 사용하여 Flex 어플리케이션과 통신하고 있습니다. 그러나 나는 오류가 계속 발생합니다.PyAMF/Django - Flex 클래스 매핑 오류

내 모델 :

from django.contrib.auth.models import User 

class Talent(User): 
    street = models.CharField(max_length=100) 
    street_nr = models.CharField(max_length=100) 
    postal_code = models.PositiveIntegerField() 
    city = models.CharField(max_length=100) 
    description = models.CharField(max_length=100) 

내 게이트웨이 파일 :

from pyamf.remoting.gateway.django import DjangoGateway 
from addestino.bot.services import user 
from addestino.bot.models import * 
from django.contrib.auth.models import User 
import pyamf 

pyamf.register_class(User, 'django.contrib.auth.models.User') 
pyamf.register_class(Talent, 'addestino.bot.models.Talent') 

services = { 
    'user.register': user.register, 
    'user.login': user.login, 
    'user.logout': user.logout, 
} 

gateway = DjangoGateway(services, expose_request=True) 

플렉스 인재 개체 :

package be.addestino.battleoftalents.model 
{ 
    [Bindable] 
    public class Investor 
    { 
    public static var ALIAS : String = 'be.addestino.battleoftalents.model.Investor'; 

    public var id:Object; 
    public var street:String; 
    public var street_nr:String; 
    public var postal_code:uint; 
    public var city:String; 
    public var cash:Number; 
    public var date_created:Date; 
    public var date_modified:Date; 
    public var username:String; 
    public var password:String; 
    public var email:String; 

    public function Investor() 
    { 
    }  
} 

}

플렉스 내 register servicemethod를 호출하면 (A 메서드는 파이썬 플렉스 투자자 보내), 난 'KeyError: first_name' 오류가 발생합니다. 그런 다음 first_name 필드를 Flex VO에 추가하면 last_name 오류가 발생합니다. 등등. 이 오류는 우리의 flex VO가 django 모델과 정확히 같은 필드를 가져야 함을 의미합니다. 간단한 개체를 사용하면 문제가되지 않습니다. 하지만 우리는 django User 객체의 하위 클래스를 사용합니다. 투자자가 예를 들어 user_ptr 필드를 필요로한다는 것을 의미합니다. 참고 : 서비스 방법 전에 모든 오류가 발생합니다.

더 쉬운 방법이 있습니까? 이상적으로는 우리가 사용하는 필드 (Django 사용자 또는 User까지 확장되는 장고)에 관계없이 Flex Investor VO를 사용하는 것이 이상적입니다. 하지만 지금 당장 Flex 객체는 Django 객체를 모델링해야합니다. 나는 Django User 객체가 어떤 모습인지 정확히 알지 못한다.

정말 도움이 될 수 있습니다. 미리 감사드립니다 :-)

답변

3

이 작업은 IExternalizable 인터페이스를 사용하여 수행됩니다. PyAMF Docs

  • Adobe Docs
  • 그것은 당신이 명시 적으로 작성하고 객체를 읽을 수

    • . 이것이 Java 암시 적 직렬화와 비슷하다면 기본적으로 전송되는 것을 제한하지 않을 것입니다. 나는 PyAMF로 이것의 예제를 찾을 수 없었다.

      Best post 내가 발견 한 직렬화.

    1

    PyAMF 0.6b2의 출시로 마침내이 질문에 대답 할 수 있습니다.

    0.5.1은 장고 모델을 인코딩 할 때 상속을 처리하는 방법이 매우 엄격했습니다. 모든 속성이 각 개체에 인코딩되도록 보장되었으며 요청을 디코딩 할 때 모든 속성을 사용할 수 있어야했습니다.

    새 버전의 출시와 함께 빨려와 행동이 변경되었습니다. PyAMF는 입니다. 플렉스에서 수령 한 것에 대해 더 용서하십시오. KeyError 오류가 더 이상 발생하지 않아야하며, 그렇지 않으면 버그로 간주됩니다.

    관련 문제