1

テーブルで入力された 1 つのモデル (会社のカテゴリ) があります。単純な名前などです。次に、会社のモデルがあり、これら 2 つをリンクして、入力されたドロップダウン ボックスにカテゴリが表示されるようにします。

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 をリストにする方法を教えてください。

表の内容は次のとおりです。

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)

会社を追加しようとすると、テーブルの値から入力されたドロップダウン ボックスが表示されるようになりました。ただし、送信時にドロップダウンの値がデータストアのテキスト値に入力されていません。これはどのように行うべきですか?

4

1 に答える 1

1

コードをshell.appspot.comに貼り付けても問題ありません。そのため、問題の原因が何であれ、サンプル コードはそれを代表するものではありません。Christopher Ramirez が示唆しているように、おそらくcompanycategory同じモデルまたはモデルの親クラスで 2 回宣言しています。

于 2012-05-15T05:36:17.107 に答える