Tôi đang cố gắng tải một thực thể bằng khóa bằng cách sử dụng id được gán bởi kho dữ liệu nhưng tôi không thấy bất kỳ phương thức api nào để thực hiện điều này (sử dụng NDB). Tôi nghĩ rằng tôi sẽ có thể làm cho một Key từ một số nguyên id và sử dụng key.get() để tải các thực thể, nhưng tôi không thấy một cách để làm cho một khóa từ chỉ là một id. Tôi nghi ngờ tôi đang thiếu một cái gì đó hiển nhiên ở đây. Làm thế nào tôi nên tải một thực thể mà tôi chỉ biết id của nó?công cụ ứng dụng ndb - làm cách nào để tải thực thể theo khóa bằng id?
Trả lời
YourModel.get_by_id()
lấy phiên bản mẫu theo id.
đây các tài liệu:
https://developers.google.com/appengine/docs/python/ndb/modelclass#Model_get_by_id
không nghĩ rằng bạn không thể có được một tổ chức bởi id mà không biết loại vì trường hợp của lớp mẫu khác nhau có thể có cùng một id/KEY_NAME
Một cách: ndb.Key(YourModel, id).get()
.
Các mô hình trong NDB không xác định loại khóa của chúng như là một phần của mô hình. Điều này tiện lợi ở chỗ bạn có thể có một kiểu mẫu nhất định có thể truy cập thông qua nhiều loại khóa và cha mẹ khác nhau, điều này làm cho chúng trở nên linh hoạt hơn. Nhưng nó có phần vấn đề bởi vì nó không phải luôn luôn rõ ràng những gì chính đại diện hoặc nơi nó đến từ.
Vì vậy, trong trường hợp chỉ có bao giờ một loại chìa khóa cho một mô hình nhất định (đó là gần như mỗi mô hình), tôi muốn tạo ra một phương pháp học để tạo ra các phím đó, có thêm một chút rõ ràng ngữ nghĩa :
class Book(ndb.Model):
title = ndb.StringProperty()
pages = ndb.IntegerProperty()
@classmethod
def make_key(cls, isbn):
return ndb.Key(cls, isbn)
b = Book.make_key('1234-5678').get()
Chắc chắn mã bổ sung không thực sự cần thiết, nhưng nó cho biết rõ ràng và làm cho mô hình của tôi bền vững hơn.
- 1. ndb của công cụ ứng dụng Google: sử dụng id hoặc tên khóa?
- 2. Công cụ ứng dụng của Google: truy vấn trả về ID thực thể bằng cách sử dụng python
- 3. Mã khóa tùy chỉnh NDB của Máy ứng dụng Google
- 4. Tải khóa cá nhân theo cách thủ công bằng ssh
- 5. Chiếu NDB của khóa Ví dụ hoặc ID
- 6. ndb truy xuất khóa tổ chức theo ID không có cha mẹ
- 7. ưu và khuyết điểm của db và ndb trong công cụ ứng dụng google
- 8. Làm cách nào để khởi chạy một ứng dụng cụ thể theo chương trình trong Android?
- 9. Cách tải lên và lưu trữ hình ảnh bằng công cụ ứng dụng google (java)
- 10. Làm cách nào để xác thực các khóa mảng bằng cách sử dụng Xác thực Symfony?
- 11. Làm cách nào để xóa thực thể khỏi kho lưu trữ Công cụ ứng dụng của Google?
- 12. Làm cách nào để xác minh rằng một tệp khóa công cộng cụ thể được sử dụng với git?
- 13. Tải lên và phân tích tệp csv bằng công cụ ứng dụng google
- 14. Làm cách nào để có danh sách các id trong một lớp cụ thể bằng jquery?
- 15. Làm cách nào để Chrome tải "ứng dụng cửa hàng"?
- 16. Đặt id theo dõi trong cân bằng tải nginx
- 17. Tạo khóa 128 bit bằng công cụ khóa
- 18. Làm cách nào để tải ứng dụng mô hình Django?
- 19. Làm cách nào để xác thực người dùng trong ứng dụng Nút bằng xác thực Django?
- 20. Khóa hàng - theo cách thủ công sử dụng chúng
- 21. Tải lên tệp chiến tranh lên công cụ ứng dụng của Google (GAE) bằng cách sử dụng appcfg
- 22. Làm cách nào để tải các hàng cụ thể từ tệp .txt bằng Python?
- 23. Làm thế nào để sắp xếp div theo id của họ bằng cách sử dụng jQuery?
- 24. Cách khóa thủ công tệp cho các ứng dụng khác
- 25. Làm thế nào để bạn sử dụng gọn gàng trong công cụ ứng dụng google (Python)
- 26. Công cụ blog để tích hợp với ứng dụng java. Công cụ blog nào?
- 27. Ghim một ứng dụng Java bằng cách sử dụng Launch4j vào thanh công cụ Windows 7
- 28. Ứng dụng iPhone: cách tải biểu tượng ứng dụng từ id ứng dụng?
- 29. Làm cách nào để tải các tab chân trang động bằng jquerymobile trong ứng dụng PhoneGap?
- 30. Cách tốt nhất tạo bản sao của thực thể blobstore trên công cụ ứng dụng trong Java là gì?
Cảm ơn, đó chính xác là những gì tôi đang tìm kiếm. Không chắc chắn làm thế nào tôi bị mất trong tài liệu. – user605331
Tôi nghĩ rằng các tài liệu là sai, tôi không thể làm điều này để làm việc cho cuộc sống của tôi, nhưng sau đó tôi nhận thấy tôi đã đi qua một str để chuyển id dài sang một int đã làm các trick, mặc dù các tài liệu dẫn bạn đến tin rằng bạn có thể sử dụng một str này không phải là giữ đúng ít nhất là không phải trên phiên bản ứng dụng máy chủ ứng dụng máy chủ dev địa phương 1.8.9. Một khi tôi đã làm một int (id_str) nó làm việc tốt. – Shaun
@Shaun tôi không nghĩ rằng tài liệu là sai. nếu id của bạn là 'int' thì bạn sẽ phải truyền vào' int' và nếu nó là 'str' thì nó phải là' str'. – aschmid00