[英]Issue with PyAMF, Django, and Python's “property” feature
到目前為止,使用PyAMF在Flex前端和Django后端之間進行通信已經取得了巨大的成功。 但是,我相信我遇到了一個錯誤。 以下示例(強調單詞“ example”)演示了(潛在)錯誤:
我的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。
有人對我可能做錯的事情有任何見解嗎?
我剛剛收到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的正確值。
我已經為此創建了票證 ,稍后會考慮獲得補丁。
干杯,
缺口
更新 :Nick已修復此錯誤,它將在PyAMF 0.4.1中發布(應在本周末發布)。
一點也不。
您認為錯誤是來自Django還是來自Flex? 您首先可以在Flex中跟蹤AMF對象。 如果該值全為0,則可以很好地了解PyAMF的功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.