2012-05-08 7 views
1

私は1つのモデル(会社のカテゴリ)をテーブルで作成しました - シンプルな名前など。私は会社のモデルを持っています。ポピュレートされたドロップダウンボックスにカテゴリがあります。私はこれを行うときGoogle 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をリストにすることができますか。ここで

は、テーブルにあるものである:

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

これはローカルのアプリケーションサーバーまたはプロードで試していますか?ローカルのdevアプリケーションサーバーを使用して問題を再現できません。 CompanyとCompanyCategoryをインスタンス化するために使用するコードも含めることができますか? –

+0

エラーは、「CompanyCategoryは既にプロパティーカテゴリ名を持っています」と表示され、 '' CompanyCategory''モデルで '' categoryname = db.StringProperty(required = True) ''を2回以上宣言しています。 –

+0

@ダンこれはまっすぐな生産です。 – Androidian

答えて

1

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

関連する問題