my.packages jest niestandardowym pakietem archetypes w katalogu src. Tysiące elementów w instancji Plone są dodawane wraz z jej typami. Chcę zmienić nazwę pakietu jako my.package. Po prostu odinstalowując pliki my.packages i instalując plik my.package, znajduję http://localhost:8080/mysite/myfolder/my-item, pokazując <persistent broken my.packages.content.mytype.MyType instance '\x00\x00\x00\x00\x00Un^'>
. Czy muszę przeprowadzić migrację? Czy istnieje prosty sposób na rozwiązanie tego problemu?Zmiana nazwy my.packages na my.package
Odpowiedz
Możesz utworzyć alias dla kompatybilności wstecznej, wykonując operację pod numerem sys.modules
. Czy to w pakiecie __init__.py
:
import sys
sys.modules['my.packages'] = sys.modules[__name__]
ten sposób maszyny wytrwałość może znaleźć zajęcia jeszcze.
Co się dzieje, gdy instancje Archetypes są przechowywane w ZODB, mechanizm trwałości przechowuje ścieżkę modułu dla klasy (kropkowana ścieżka Pythona, taka jak my.packages.types.foobar.FooBar
) w przechowywanych danych. Podczas przywracania obiektu z ZODB ta sama ścieżka jest używana do ponownego utworzenia instancji. Gdy zmienisz nazwę pakietu, wszystkie te odniesienia są zepsute.
W powyższej sztuczce fajnie jest, że jeśli obiekt został zmieniony i ponownie zapisany w ZODB w transakcji, zapisana zostanie ścieżka modułu nowa. Można w ten sposób napisać do wszystkich instancji Archetypes z tego pakietu, aby migracja stała się trwała, aby można było ponownie usunąć powyższe działania.
- 1. Zmiana nazwy komputera na serwerze IIS 7
- 2. Zmiana nazwy pakietu na istniejący projekt Phonegap
- 3. Zmiana nazwy pliku z TortoiseSVN na Windows
- 4. Zmiana domyślnej składni na podstawie nazwy pliku
- 5. zmiana nazwy tabeli na wielkie litery
- 6. Subversion, zmiana nazwy, Wha?
- 7. Zmiana nazwy tabeli dbo.AspNetUsers
- 8. Zmiana nazwy pliku PHP
- 9. Zmiana nazwy klawiszy słownika
- 10. Zmiana nazwy celu iOS
- 11. MySQL - Zmiana nazwy kolumny
- 12. Zmiana nazwy widelca dla Github
- 13. Zmiana nazwy opublikowanego modułu NPM
- 14. Javafx zmiana nazwy osx menu
- 15. Zmiana nazwy kolekcji w mongodb
- 16. pakiety Zmiana nazwy w Eclipse
- 17. Zmiana nazwy użytkownika konta GitHub
- 18. Zmiana nazwy kategorii dla VSPS
- 19. Wycofywanie przenoszenia svn/zmiana nazwy
- 20. Zmiana nazwy pliku w PyCharm
- 21. Inline TinyMCE nazwy wejściowe zmiana
- 22. Zmiana nazwy odległego oddziału git
- 23. Zmiana nazwy bazy danych SQL
- 24. Zmiana nazwy grupy zasobów Azure
- 25. Zmiana nazwy pliku podczas instalacji
- 26. Zmiana nazwy profilu programisty Apple
- 27. Delphi: zmiana nazwy nieprawidłowego folderu
- 28. zmiana nazwy kontrolera asp.net mvc
- 29. Sposób: Zmiana nazwy aplikacji na podstawie ustawienia języka telefonu
- 30. Czy zmiana mojej nazwy użytkownika Github na SnakeCase spowoduje cokolwiek?