Ich habe eine Strawberry GraphQL -App, die SQLalchemy für Modelle verwendet, und sqlalchemy_i18n für die Internationalisierung. Ich habe die grundlegende Setup -Handbuch für i18n auf den Paketdokumenten verfolgt, aber ich kann es einfach nicht zum Laufen bringen.
# app/db/__init__.py
import sqlalchemy_utils
from sqlalchemy_i18n import make_translatable
from app.locale import get_locale
sqlalchemy_utils.i18n.get_locale = get_locale
make_translatable(options={"locales": ["en", "fr"], "auto_create_locales": True})
< /code>
app.locale ist nur eine Datei, die sqlalchemy_utils.i18n.get_locale = "en" zum Testen überschreibt.from sqlalchemy import (
Boolean,
Column,
Date,
Float,
ForeignKey,
Integer,
String,
Table,
Text,
)
from sqlalchemy.orm import relationship
from sqlalchemy_i18n import Translatable, translation_base
from app.db.session import Base
class Category(Base, Translatable):
__tablename__ = "category"
__translatable__ = {'locales': ["en", "fr"]}
category_id = Column(Integer, primary_key=True)
uuid = Column(String, nullable=False)
code = Column(String)
locale = "en"
class CategoryTranslation(translation_base(Category)):
__tablename__ = "category_trans"
category = Column(String, nullable=False)
desc = Column(String, nullable=False)
< /code>
Und ich versuche eine GraphQL -Mutation auszuführen, die so aussieht: < /p>
import uuid
import strawberry
from strawberry.types import Info
from app.db.session import get_db
from app.models.models import Category, CategoryTranslation
from app.types.types import Category as CategoryType
@strawberry.input
class CreateCategoryInput:
category: str
desc: str
def create_category_resolver(
data: CreateCategoryInput, info: Info, locale: str = "en"
) -> CategoryType:
db_session = next(get_db())
try:
uuid_str = str(uuid.uuid4())
new_category = Category(locale=locale, uuid=uuid_str, code=None)
print(f"Locale for new category: {new_category.locale}")
print(f"Valid locales: {new_category.__translatable__['manager'].option(new_category, 'locales')}")
db_session.add(new_category)
print("test123")
db_session.flush()
new_category.translations['en'] = CategoryTranslation(
category=data.category,
desc=data.desc,
)
print("Translations:", new_category.translations)
db_session.flush()
db_session.commit()
return CategoryType(
categoryId=new_category.category_id,
uuid=new_category.uuid,
code=new_category.code,
category=new_category.translations[locale].category,
desc=new_category.translations[locale].desc,
)
except Exception as e:
db_session.rollback()
print(f"Error creating category: {e}")
raise e
finally:
db_session.close()
< /code>
Die Idee am Ende ist es, das Gebietsschema vom Frontend aus zu greifen, aber ich bin an einigen Orten für das Debuggen fest. Wie Sie sehen, habe ich dort ein paar Testdrucke, es schafft es nie zu "testing123", was bedeutet, dass es beim Hinzufügen der Instanz fehlschlägt. Ich habe zuerst versucht, Übersetzungen durchzuführen, bevor ich zur Sitzung hinzugefügt wurde und das auch fehlschlägt. Die Orte drucken wie erwartet, "en" zuerst und ['en', 'fr'] im zweiten Druck. < /P>
Der Fehler, den ich bekomme, lautet wie folgt:File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 3481, in add
self._save_or_update_state(state)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 3508, in _save_or_update_state
for o, m, st_, dct_ in mapper.cascade_iterator(
~~~~~~~~~~~~~~~~~~~~~~~^
"save-update", state, halt_on=self._contains_state
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
):
^
File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/sqlalchemy/orm/mapper.py", line 3979, in cascade_iterator
queue = deque(
prop.cascade_iterator(
......
)
)
File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/sqlalchemy/orm/relationships.py", line 1524, in cascade_iterator
tuples = state.manager[self.key].impl.get_all_pending(state, dict_)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'get_all_pending'
Ich habe eine Strawberry GraphQL -App, die SQLalchemy für Modelle verwendet, und sqlalchemy_i18n für die Internationalisierung. Ich habe die grundlegende Setup -Handbuch für i18n auf den Paketdokumenten verfolgt, aber ich kann es einfach nicht zum Laufen bringen.[code]# app/db/__init__.py import sqlalchemy_utils from sqlalchemy_i18n import make_translatable
from app.locale import get_locale
sqlalchemy_utils.i18n.get_locale = get_locale make_translatable(options={"locales": ["en", "fr"], "auto_create_locales": True}) < /code> app.locale ist nur eine Datei, die sqlalchemy_utils.i18n.get_locale = "en" zum Testen überschreibt.from sqlalchemy import ( Boolean, Column, Date, Float, ForeignKey, Integer, String, Table, Text, )
from sqlalchemy.orm import relationship from sqlalchemy_i18n import Translatable, translation_base
class CategoryTranslation(translation_base(Category)): __tablename__ = "category_trans" category = Column(String, nullable=False) desc = Column(String, nullable=False) < /code> Und ich versuche eine GraphQL -Mutation auszuführen, die so aussieht: < /p> import uuid import strawberry from strawberry.types import Info from app.db.session import get_db from app.models.models import Category, CategoryTranslation from app.types.types import Category as CategoryType
@strawberry.input class CreateCategoryInput: category: str desc: str
return CategoryType( categoryId=new_category.category_id, uuid=new_category.uuid, code=new_category.code, category=new_category.translations[locale].category, desc=new_category.translations[locale].desc, ) except Exception as e: db_session.rollback() print(f"Error creating category: {e}") raise e finally: db_session.close() < /code> Die Idee am Ende ist es, das Gebietsschema vom Frontend aus zu greifen, aber ich bin an einigen Orten für das Debuggen fest. Wie Sie sehen, habe ich dort ein paar Testdrucke, es schafft es nie zu "testing123", was bedeutet, dass es beim Hinzufügen der Instanz fehlschlägt. Ich habe zuerst versucht, Übersetzungen durchzuführen, bevor ich zur Sitzung hinzugefügt wurde und das auch fehlschlägt. Die Orte drucken wie erwartet, "en" zuerst und ['en', 'fr'] im zweiten Druck. < /P> Der Fehler, den ich bekomme, lautet wie folgt:File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 3481, in add self._save_or_update_state(state) ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^ File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/sqlalchemy/orm/session.py", line 3508, in _save_or_update_state for o, m, st_, dct_ in mapper.cascade_iterator( ~~~~~~~~~~~~~~~~~~~~~~~^ "save-update", state, halt_on=self._contains_state ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ): ^ File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/sqlalchemy/orm/mapper.py", line 3979, in cascade_iterator queue = deque( prop.cascade_iterator( ...... ) ) File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/sqlalchemy/orm/relationships.py", line 1524, in cascade_iterator tuples = state.manager[self.key].impl.get_all_pending(state, dict_) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'get_all_pending' [/code] Die Dokumente, die ich auf i18n konsultiert habe>
Zusammenfassung
Meine App führt eine benutzerdefinierte Feldvalidierung durch und fügt einen FieldError hinzu, dessen Nachrichtenschlüssel nicht richtig übersetzt wird. Stattdessen wird der einfache...
Ich habe also versucht, eine Verbindung zum IBM DB2 -Server herzustellen, das in den letzten Tagen auf IBM Cloud gehostet wurde, und habe es geschafft, mit den bereitgestellten Anmeldeinformationen...
Ich habe darüber nachgedacht, ob es eine Möglichkeit gibt, nicht verwendete Übersetzungsschlüssel in Laravel mithilfe einer regulären Unterstrichübersetzung zu identifizieren?
Ich habe mit meinem Freund einen Conlang erstellt und wir beschlossen, ein Online -Wörterbuch dafür zu machen. Alle Seiten werden dynamisch mit Node.js, Express und Lenker generiert. Die Daten für...
Ich habe mit meinem Freund einen Conlang erstellt und wir beschlossen, ein Online -Wörterbuch dafür zu machen. Alle Seiten werden dynamisch mit Node.js, Express und Lenker generiert. Die Daten für...