Próbuję wczytać encję za pomocą klucza, używając identyfikatora, który został przypisany przez magazyn danych, ale nie widzę żadnej metody, aby to zrobić (używając NDB). Myślałem, że będę w stanie utworzyć klucz z identyfikatora integer i użyć key.get() do załadowania encji, ale nie widzę sposobu, aby zrobić klucz tylko z identyfikatora. Podejrzewam, że brakuje tu czegoś oczywistego. Jak powinienem załadować encję, w której tylko znam jej identyfikator?aplikacja silnika ndb - jak załadować encję za pomocą klucza, używając id?
Odpowiedz
YourModel.get_by_id()
pobiera instancję modelu według identyfikatora.
tutaj docs:
https://developers.google.com/appengine/docs/python/ndb/modelclass#Model_get_by_id
nie sądzę, nie można uzyskać podmiot przez ID nie znając rodzaj ponieważ przypadki różnych klas model może mieć ten sam identyfikator/KEY_NAME
Kolejnych sposób: ndb.Key(YourModel, id).get()
.
Modele w NDB nie definiują swojego typu klucza jako części modelu. Jest to fajne, ponieważ możesz mieć jeden model, który jest dostępny za pośrednictwem wielu różnych rodzajów kluczy i rodziców, co czyni je bardziej elastycznymi. Jest to jednak problematyczne, ponieważ nie zawsze jest jasne, co oznacza klucz lub skąd pochodzi.
Dlatego w przypadkach, gdy istnieje tylko kiedykolwiek jeden rodzaj klucza do danego modelu (co jest prawie każdy modelu), lubię tworzyć metody klasy do generowania tego klucza, który dodaje trochę semantycznej jasności :
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()
Oczywiście dodany kod nie jest bezwzględnie potrzebny, ale dodaje przejrzystości i sprawia, że moje modele są bardziej długoterminowe w utrzymaniu.
- 1. Ndb wyszukiwarki aplikacji Google: używając identyfikatora lub nazwy klucza?
- 2. Utwórz encję za pomocą EntityListener
- 3. Google App Engine NDB klucz niestandardowy id
- 4. Django, jak zdobyć użytkownika za pomocą id, używając django.contrib.auth.models.User
- 5. Jak usunąć encję z silnika aplikacji Google Datastore?
- 6. Jak wysłać zawartość pliku jako encję ciała za pomocą cURL
- 7. Jak ustawić ID za pomocą javascript?
- 8. Metoda ndb to_dict nie zawiera klucza obiektu
- 9. Jak załadować wp_editor za pomocą Jquery?
- 10. Jak przejść do poprzedniej strony za pomocą kursorów ndb?
- 11. Jak określić hasło klucza za pomocą javax.net.ssl?
- 12. jak załadować plik na serwer zdalny http za pomocą java?
- 13. has_many: za pomocą klucza obcego?
- 14. Jak odzyskać nazwę Enum za pomocą id?
- 15. Jak załadować zgrupowane dane za pomocą SSIS
- 16. Jak załadować wiele schematów do silnika lub aplikacji Rails?
- 17. GROUP BY za pomocą klucza obcego lub klucza podstawowego?
- 18. Jak usunąć atrybut id z elementu div za pomocą jQuery?
- 19. Modyfikuj programowo pliki csproj za pomocą Microsoft.Build.Evaluation (zamiast silnika)
- 20. Aplikacja Ember CLI wewnątrz silnika Railsowego
- 21. Uzyskaj zasób z ResourceDictionary za pomocą klucza
- 22. Wybieranie za pomocą atrybutu ID za pomocą JQuery w ASP.NET
- 23. Jak załadować kątowy2 używając CDN i SystemJS
- 24. Jak mogę wykonać zapytanie za pomocą klucza obcego w MySQL?
- 25. Uderz element za pomocą Id w JavaScript
- 26. mechanize wybierz formularz za pomocą id
- 27. Jak usunąć rekord za pomocą ograniczenia klucza obcego?
- 28. Jak dodać obiekt do NSMutableDictionary za pomocą klucza?
- 29. Fluent NHibernate join nie używając klucza podstawowego
- 30. TortoiseGit za pomocą niepoprawnego klucza SSH
Dzięki, właśnie tego szukałem. Nie wiem, jak to przegapiłem w dokumentach. – user605331
Myślę, że doktorzy są w błędzie, nie mogłem zmusić tego do pracy w moim życiu, ale potem zauważyłem, że przechodzę przez str, więc konwersja długich id do int zrobiła sztukę, chociaż doktorzy prowadzą cię do wierzę, że możesz użyć stritu, który nie jest prawdziwy, a przynajmniej nie w lokalnym silniku aplikacji aplikacji serwera aplikacji w wersji 1.8.9. Kiedy zrobiłem int (id_str), działało dobrze. – Shaun
@Shaun Nie sądzę, że dokumenty są złe. jeśli twój id jest "int", wtedy będziesz musiał przekazać w 'int' i jeśli jest to' str', to musi to być 'str'. – aschmid00