2012-05-08 175 views
1

我有一個模型(公司類別)由一個表填充 - 簡單的名稱等我然後有一個公司模型,我想將這兩個鏈接在一起,使我在填充的下拉框中有類別。引用谷歌App Engine中的其他表使用db.ReferenceProperty

class CompanyCategory(db.Model): 
    categoryname = db.StringProperty(required=True) 

class Company(db.Model): 
    companyurl = db.StringProperty(required=False) 
    companycategory = db.ReferenceProperty(CompanyCategory, collection_name='category') 

但是當我這樣做,我得到了以下錯誤:

<class 'google.appengine.ext.db.DuplicatePropertyError'>: Class CompanyCategory already has property categoryname 
Traceback (most recent call last): 
    File "/base/data/home/apps/XXX/1.358759458095086806/showcompanies.py", line 52, in <module> 
    class Company(db.Model): 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py", line 514, in __init__ 
    _initialize_properties(cls, name, bases, dct) 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py", line 429, in _initialize_properties 
    attr.__property_config__(model_class, attr_name) 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py", line 3656, in __property_config__ 
    self.collection_name)) 

如何使這項工作?我已經看過一些例子,但在這種情況下我無法做出工作。我如何使公司類別成爲一個列表。

這裏是什麼是表:

CompanyCategory實體

‹ Prev 20 1-1 Next 20 › 
    ID/Name  categoryname 
    id=96001 ss 

這是模型定義是周圍的其他方式。我希望每個公司都有一個從表格填充的類別。用下面的定義,我可以得到的東西,就像我在尋找:

class CompanyCategory(db.Model): 
    categoryname = db.StringProperty(required=False) 
    def __unicode__(self): 
      return u'%s' % (self.categoryname) 

class Company(db.Model): 
    companyurl = db.StringProperty(required=False) 
    companyname = db.StringProperty(required=False) 
    companydesc = db.TextProperty(required=False) 
    companyaddress = db.PostalAddressProperty(required=False) 
    companypostcode = db.StringProperty(required=False) 
    companyemail = db.EmailProperty(required=False) 
    companycountry = db.StringProperty(required=False) 



    companyvalid = db.BooleanProperty() 
    companyentrytime = db.DateTimeProperty(auto_now_add=True) 
    companylatlong = db.GeoPtProperty() 
    companycategory = db.ReferenceProperty(CompanyCategory) 

我現在得到一個下拉框,當我去添加一個公司 - 從表中的值填充。但是,我沒有在提交時將下拉列表中的值填入數據存儲區中的文本值中。這應該怎麼做?

+0

你是在本地開發應用程序服務器或產品中嘗試此操作嗎?使用本地開發應用程序服務器,我無法重現您的問題。您是否也可以包含您用於實例化Company和CompanyCategory的代碼? –

+0

錯誤說:「類CompanyCategory已經有屬性類別名稱」,它會在''CompanyCategory''模型中多次聲明''categoryname = db.StringProperty(required = True)''''。 –

+0

@丹這是直接生產。 – Androidian

回答

1

將代碼粘貼到shell.appspot.com中工作得很好 - 因此無論問題的原因如何,您的示例代碼都不代表它。正如克里斯托弗拉米雷茲所建議的那樣,您可能會在同一模型中或在模型的父類中聲明companycategory兩次。