2012-03-21 50 views
0

我用從PyAMF的ClassAlias刪除一個Django場

my_classalias = pyamf.register_class(mymodel, mymodel._meta.object_name) 

,使我的Django模型到AMF序列化對象。

但問題是mymodel包含一個名爲id的自動創建的pk字段,但Flash/Flex客戶端無法接受此類字段,是否有辦法在PyAMF ClassAlias中刪除該字段?

在此先感謝!

回答

0

這是我自己的解決方案:

m = my_model 
ka = pyamf.register_class(m, m._meta.object_name) 
ka.exclude_attrs = ['field1', 'field2'] 

或替代,在models.py

class my_model(models.Model): 
    field1 = IntegerField() 
    field2 = TextField() 
    class __amf__: 
     exclude = ('field1',) 

注意存在PyAMF的一個unpatched bug爲M2M領域,你可能需要手動編輯文件pyamf/adapters/_django_db_models_base.py ,行168

for name, relation in self.relations.iteritems(): 

    if name in self.exclude_attrs: 
     continue 
    if '_%s_cache' % name in obj.__dict__: 
     attrs[name] = getattr(obj, name) 

希望這能幫助那些和我有同樣問題的人。