我正在使用 PyAmf 与 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)
Flex Talent 对象:
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
servicemethod(一种将 flex Investor 发送到 python 的方法),我会收到一个错误'KeyError: first_name'
。然后,当我们first_name
向 Flex VO 添加字段时,我们会收到last_name
错误消息。等等。这个错误意味着我们的 flex VO 必须具有与我们的 django 模型完全相同的字段。对于简单的对象,这不是问题。但是我们使用 django User 对象的子类。这意味着我们的投资者也需要一个user_ptr
领域。注意:我在 servicemethod 之前得到所有错误。
有没有更简单的方法?理想情况下,我们将拥有一个 Flex Investor VO,其中仅包含我们使用的字段(无论它们来自 Django User 还是我们的 djangoInvestor
扩展自User
)。但是现在 Flex 对象必须完全按照我们的 Django 对象建模。我什至不确切知道 Django User 对象是什么样的(我不应该这样)。
我真的可以使用一些帮助。提前非常感谢:-)