首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyAMF / Django - Flex类映射错误

PyAMF / Django - Flex类映射错误
EN

Stack Overflow用户
提问于 2009-05-13 08:51:47
回答 2查看 1.6K关注 0票数 2

我正在使用PyAmf与Flex应用程序进行通信。但我总是犯错误。

我的模特:

代码语言:javascript
复制
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)

我的网关文件:

代码语言:javascript
复制
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)

Flex人才对象:

代码语言:javascript
复制
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()
    {
    }      
}

}

如果Flex调用我的register服务方法(一种向python发送flex的方法),我将得到一个错误'KeyError: first_name'。然后,当我们在Flex中添加一个first_name字段时,我们会得到一个last_name错误。诸若此类。这个错误意味着我们的flex必须有与django模型完全相同的字段。对于简单的对象,这不会是一个问题。但是我们使用django用户对象的子类。这意味着我们的投资者也需要一个user_ptr字段。注意:在服务方法之前,我会得到所有错误。

有更简单的方法吗?理想情况下,我们应该有一个Flex,它只包含我们使用的字段(不管它们来自Django用户还是从User扩展的django Investor )。但是现在,Flex对象必须完全按照我们的Django对象建模。我甚至不知道Django用户对象到底是什么样子(我不应该这么做)。

我真的需要帮助。提前多谢:)

EN

回答 2

Stack Overflow用户

发布于 2009-05-14 00:33:11

这是使用IExternalizable接口完成的。

  • PyAMF文档
  • Adobe

它允许您显式地写入和读取对象。如果这与Java隐式序列化类似,则不会允许您限制默认发送的内容。我在PyAMF中找不到这方面的任何例子。

我发现了关于序列化的最佳职位

票数 3
EN

Stack Overflow用户

发布于 2010-08-12 23:55:34

随着PyAMF 0.6b2的发布,我终于可以回答这个问题了。

0.5.1在编码Django模型时,它处理继承的方式非常严格。它确保所有属性都被保证对每个对象进行编码,并期望在解码请求时所有属性都可用。

这太糟糕了,随着新版本的发布,这种行为也发生了变化。对于您从Flex中传递出来的内容,PyAMF要宽容得多。您不应该再得到KeyError错误了(如果是的话,它就被认为是一个错误)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/856846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档