簡體   English   中英

使用db.ReferenceProperty引用Google App Engine中的其他表

[英]Referencing other tables in Google App Engine using 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))

我該如何工作? 我看了一些示例,但是在這種情況下我無法工作。 如何將公司類別列為清單。

這是表中的內容:

公司類別實體

‹ 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)

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

將您的代碼粘貼到shell.appspot.com中可以很好地工作-因此,無論導致問題的原因如何,示例代碼都不能代表它。 作為克里斯托弗·拉米雷斯指出,你可能會宣布companycategory兩次,無論是在相同的模型,或者在父類的模型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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