2

設計上の質問がありますが、BlobReferenceProperty は基本的に ReferenceProperty ですか? ReferenceProperty のようにプリフェッチ (Nick http://blog.notdot.net/2010/01/ReferenceProperty-prefetching-in-App-Engineが推奨) を行う必要がありますか?

現在、私はこのデザインを持っています:

class Entry(db.Model):
  creator     = db.ReferenceProperty(User, required=True, collection_name='entries')
  created_at  = db.DateTimeProperty(auto_now_add=True)

  # image
  image_id    = db.StringProperty() # key_name for Image
  image_url   = db.LinkProperty(indexed=False)
  width       = db.IntegerProperty(default=0, indexed=False)
  height      = db.IntegerProperty(default=0, indexed=False)


class Image(db.Model):
  created_at    = properties.DateTimeProperty(auto_now_add=True)
  blob          = blobstore.BlobReferenceProperty(required=True)
  filename      = db.StringProperty(indexed=False)
  published     = db.BooleanProperty(default=False, indexed=True)
  width         = db.IntegerProperty(default=0, indexed=False)
  height        = db.IntegerProperty(default=0, indexed=False)

これは良くなったり悪くなったりしますか? 代わりにブロブを Entry に移動しました。

class Entry(db.Model):
  creator     = db.ReferenceProperty(User, required=True, collection_name='entries')
  created_at  = db.DateTimeProperty(auto_now_add=True)

  # image     
  image_blob  = blobstore.BlobReferenceProperty(required=False)
  filename    = db.StringProperty(indexed=False)
  image_id    = db.StringProperty()
  image_url   = db.LinkProperty(indexed=False)
  width       = db.IntegerProperty(default=0, indexed=False)
  height      = db.IntegerProperty(default=0, indexed=False)

ありがとう。

4

2 に答える 2

1

Blobreference プロパティは db.ReferenceProperty と似ていますが、エンティティが実際には blobstore にあるという点が異なります。そのため、ReferenceProperty のプリフェッチは BlobReferenceProperty にも適用されます。blobstore.py には、blob エンティティをプリフェッチできる get_value_for_datastore も含まれています。

2 番目の質問に来て、ブロブを Entry に移動すると、機能によって異なります。

于 2011-05-24T12:40:34.710 に答える
0

エントリと画像の間に 1 対多の関係が必要な場合や、すべてのエントリを多くの画像と一致させたい場合は、最初のモデルのようなものを使用できます。私はそのような関係を使用します:

class Article(db.Model):      
    user=db.UserProperty(verbose_name="userid") 

class Image(db.Model):       
    reference=db.ReferenceProperty(Article,collection_name='matched_images')
    primary_image = blobstore.BlobReferenceProperty() 
于 2011-05-24T13:43:53.420 に答える