到目前为止,我使用PyAMF在我的Flex前端和我的Django后端之间进行通信取得了很大的成功。但是,我相信我遇到了一个错误。以下示例(强调“示例”一词)演示了(潜在)错误:
我的Flex应用包含以下VO:
package myproject.model.vo
{
[Bindable]
[RemoteClass(alias="myproject.models.Book")]
public class BookVO
{
public var id:int;
public var title:String;
public var numberOfOddPages:int;
}
}
我的Django应用程序包含以下模型:
class Book(models.Models):
title = models.CharField(max_length=20)
def _get_number_of_odd_pages(self):
#some code that calculates odd pages
return odd_page_total
numberOfOddPages = property(_get_number_of_odd_pages)
当我尝试检索要在DataGrid中显示的图书对象时,图书会按预期显示在网格中。但是,“numberOfOddPages”始终设置为0.我甚至尝试使用默认值(即“numberOfOddPages = 100”)显式设置此属性,以查看我的“_get_number_of_odd_pages()”方法是否有错误。不幸的是,它产生了相同的结果:VO中的值保持为0。
有没有人对我可能做错了什么有任何见解?
答案 0 :(得分:1)
我刚收到PyAMF首席开发人员的以下回复。这绝对是一个错误:
这是Django的一个错误 适配器处理非models.fields。* 属性。
如果我这样做:
import pyamf
class Book(object):
def _get_number_of_odd_pages(self):
return 52
numberOfOddPages = property(_get_number_of_odd_pages)
pyamf.register_class(Book, 'Book')
encoded = pyamf.encode(Book()).getvalue()
print pyamf.decode(encoded).next().numberOfOddPages
然后我得到52的正确值。
我为此创建了a ticket 并将考虑获得一个补丁 不久之后。
干杯,
尼克
更新:Nick修复了这个错误,它将在PyAMF 0.4.1中发布(应该在本周末发布)。
答案 1 :(得分:-1)
完全没有。
您认为错误来自Django还是来自Flex?您首先可以在Flex中跟踪AMF对象。如果值已经全部为0,那么请好好了解PyAMF的作用。