Tôi muốn nhận khóa tổ chức biết ID tổ chức và tổ tiên. ID là duy nhất trong nhóm thực thể được xác định bởi tổ tiên. Dường như với tôi rằng không thể sử dụng giao diện ndb. Như tôi hiểu kho dữ liệu, nó có thể được gây ra bởi thực tế là hoạt động này yêu cầu quét chỉ mục đầy đủ để thực hiện. Cách giải quyết mà tôi đã sử dụng là tạo thuộc tính được tính trong mô hình, phần này sẽ chứa phần id của khóa. Bây giờ tôi có thể thực hiện truy vấn tổ tiên và nhận được khóandb truy xuất khóa tổ chức theo ID không có cha mẹ
class SomeModel(ndb.Model):
ID = ndb.ComputedProperty(lambda self: self.key.id())
@classmethod
def id_to_key(cls, identifier, ancestor):
return cls.query(cls.ID == identifier,
ancestor = ancestor.key).get(keys_only = True)
Có vẻ như hoạt động, nhưng có giải pháp nào tốt hơn cho vấn đề này không?
Cập nhật Dường như đối với kho dữ liệu, giải pháp tự nhiên là sử dụng đường dẫn đầy đủ thay vì số nhận dạng. Ban đầu tôi nghĩ nó quá nặng nề. Sau khi đọc câu trả lời dragonx tôi đã thiết kế lại ứng dụng của mình. Để tôi ngạc nhiên mọi thứ trông đơn giản hơn nhiều bây giờ. Lợi ích bổ sung là các thực thể của tôi sẽ sử dụng ít không gian hơn và tôi sẽ không cần các chỉ mục bổ sung.
Âm thanh như bạn có câu trả lời đúng! –
ID là _không được bảo đảm duy nhất trong nhóm thực thể - chỉ cho một thực thể cha mẹ cụ thể. –