簡體   English   中英

PyAMF,Django和Python的“屬性”功能出現問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM