2011-08-26 2 views
0

텍스트 객체 ("기사"또는 유사하게)에 많은 이미지 및/또는 비디오가 있도록 텍스트 객체와 얼룩 간의 일대 다 관계를 활성화하려고합니다. 첫 번째 인스턴스 변수를 인스턴스 변수로 사용하는 방법은 두 가지가 있습니다. 작동할까요?오브젝트에 많은 blob을 모델링하는 방법은 무엇입니까?

class A(search.SearchableModel): 
    blobs = db.ListProperty(blobstore.BlobReferenceProperty()) 

장점 : 단 하나의 클래스. 읽기 쉽고 데이터를 쉽게 얻을 수 있습니다. 단점 : 얼룩에 대한 추가 정보가 부족합니다. 내가 설명하는 단어와 함께 BLOB에 태그를 원한다면 난 아직도 두 클래스 대신 필요 : 그것은 referenceproperty을 필요로하고 문제가 같은 단지 클래스 A로 해결 될 수있는 두 클래스를 소개하기 때문에

class A(search.SearchableModel): 
... 
class B(db.Model): 
    reference=db.ReferenceProperty(A,collection_name='matched_blobs',verbose_name="Title") 
    blob = blobstore.BlobReferenceProperty() 

후자의 예는 단점이있다 첫 번째 예제에서. 나중의 해결책의 장점은 blobreference 속성의 listproperty가 아니라고 명확히 문서화되어 있고 나중에 구현 된 솔루션이며 지금은 참조 된 컬렉션 대신 blob의 목록을 사용하려고 생각하고 있습니다. 둘 모두가 똑같이 잘 작동합니까? 당신이 선택할 수있는 방법을 추천 할 수 있습니까?

감사

답변

4

앱 엔진이 실제로 자신의 문서에서이에 대한 기사가 있습니다 링크에 대한 http://code.google.com/appengine/articles/modeling.html

+0

감사합니다! 'db.ListProperty (blobstore.BlobReferenceProperty())'는 사용하지 못했고 아마 작동하지 않을 것입니다. 나는 어느 blob이 어떤 엔티티에 속하고 어떤 blob이 어떤 엔티티에 속하고, 어떤 blob이 어떤 엔티티에 속하고, 여기에 2 개의 클래스가있는 모델을 유지할 수 있습니다. –

+1

@Niklas 작동하지 않습니다. 속성 목록이 아닌 항목 목록이 있습니다. 'db.ListProperty (blobstore.BlobKey)'를 원한다. –

+0

'db.ListProperty (blobstore.BlobKey)'가 내가 찾고 있던 것이다. 참조 대신 ListpRoperty를 사용하면 데이터 저장소 관리 콘솔 데이터보기에서 어떤 일이 발생하는지 궁금합니다. 이제는 "blob보기"에 대한 명확한 링크가 있습니다. 현재 구현에서 오래된 인스턴스 변수 blobproperty를 사용하는 흔적이 남아 있고'get_serving_url'을 사용할 수 있기를 원합니다. 그래서 모든 blob을 blobstore로 옮기고 제가 이겼습니다. blobstore는 get_serving_url 및 admin 뷰에서 훨씬 더 효율적이므로'db.BlobProperty'를 사용하지 마십시오. –

관련 문제