Как отмечается в комментарии, проблема печати, скорее всего, связана с тем, как ваш терминал обрабатывает отображение символов Юникода. Вы можете проверить, соответствует ли символ ожидаемому, кодируя его в utf-8
байтов или используя встроенный ord()
.
Для заданной строки, представляющей один символ Unicode, вернуть целое число, представляющее кодовую точку Unicode для этого символа. Например, ord ('a') возвращает целое число 97, а ord ('€') (знак евро) возвращает 8364. Это обратное значение для chr () .
blockquote>Например,
Python 3.7.1 (default, Oct 23 2018, 19:19:42) Type 'copyright', 'credits' or 'license' for more information IPython 7.1.1 -- An enhanced Interactive Python. Type '?' for help. IIn [1]: s = "ˈtau̯rum" In [2]: print(s) ˈtau̯rum In [3]: for c in s: ...: print(c, c.encode('utf-8'), ord(c)) ...: ˈ b'\xcb\x88' 712 t b't' 116 a b'a' 97 u b'u' 117 ̯ b'\xcc\xaf' 815 r b'r' 114 u b'u' 117 m b'm' 109
Несколько опций:
добавьте one-many к родителю с каскадным удалением, но смягчите потерю производительности с помощью ленивой загрузки.
используйте Быть в спящем режиме Перехватчик (или аспект в среде AOP), чтобы обнаружить родительские рекордные удаления и удалить дочерние элементы.
Лично я одобрил бы первую опцию, поскольку она позволяет Вашей модели данных более тесно отразить реальные отношения в Ваших данных.
Править: существует третья опция, но это не приятно - используют триггер базы данных, и сбрасывают Ваш Быть в спящем режиме кэш (или используют сессию некэширования).