Masalah terjadi ketika seseorang mencoba membuat model pydantic sebelum Tortoise ORM diinisialisasi. Jika Anda melihat pydantic dasar contoh Anda akan melihat bahwa semua pydantic_model_creator
dipanggil setelah Tortoise.init
.
Solusi yang jelas adalah membuat model pydantic setelah inisialisasi Tortoise, seperti:
await Tortoise.init(db_url="sqlite://:memory:", modules={"models": ["__main__"]})
await Tortoise.generate_schemas()
Event_Pydantic = pydantic_model_creator(Event)
Atau cara yang lebih nyaman, gunakan init model awal melalui Tortoise.init_models()
. Seperti ini:
from tortoise import Tortoise
Tortoise.init_models(["__main__"], "models")
Tournament_Pydantic = pydantic_model_creator(Tournament)
Dalam kasus ini, ide utamanya adalah untuk membagi model pydantic dan db menjadi modul yang berbeda, sehingga mengimpor yang pertama tidak mengarah pada pembuatan yang kedua sebelumnya. Dan pastikan memanggil Tortoise.init_models()
sebelum membuat model pydantic.
Penjelasan lebih rinci dengan contoh dapat ditemukan di sini .