2011-09-10 44 views
2

在谷歌應用程序引擎解決方案(Python)的,我已經使用了db.ListProperty,以此來描述許多一對多的關係,就像這樣:如何從db.ListProperty中移除一個項目?

class Department(db.Model): 
    name = db.StringProperty() 

    @property 
    def employees(self): 
    return Employee.all().filter('departments', self.key()) 

class Employee(db.Model): 
    name = db.StringProperty() 
    departments = db.ListProperty(db.Key) 

我創造了許多一對多關係通過簡單地追加部關鍵db.ListProperty像這樣:

employee.departments.append(department.key()) 

的問題是,我不知道如何實際再除去這層關係,當它不再需要。

我試過用谷歌搜索它,但我似乎無法找到任何描述詳細db.ListProperty的文檔。

任何想法或參考?

回答

3

ListProperty僅僅是一個Python list一些輔助方法,使其與GAE工作,所以任何適用於list適用於ListProperty。記住

employee.departments.remove(department.key()) 
employee.put() 

記住,必須將數據解串/ reserialized每次變更時,因此,如果您添加或刪除單個值時,尋找速度,你可能想要去與造型的關係的另一種方法就像Relationship Model部分的this page

如果要搜索數據存儲區請求中的列表,則ListProperty方法的缺點有時也是producing very large indexes。 這對您來說可能並不是問題,因爲您的清單應該相對較小,但是對於未來的項目需要記住這一點。

1

通過反覆試驗才發現它:

employee.departments.remove(department.key()) 
+2

請記住,'employee.departments'是一個真正的Python'list'。你可以使用你在http://docs.python.org/tutorial/datastructures.html#more-on-lists看到的所有方法。 –

相關問題