Как создать отношение m2m для моделей в двух файлах без прямого импорта в FastAPI и SQLModel?Python

Программы на Python
Ответить
Anonymous
 Как создать отношение m2m для моделей в двух файлах без прямого импорта в FastAPI и SQLModel?

Сообщение Anonymous »

У меня есть приложение fastAPI с SQLModel. Есть две папки с файлами models.py, каждый файл содержит
модель SQLModel. Эти модели имеют отношение многие ко многим. Я создал промежуточную модель, чтобы соединить эти две модели. Я хочу реализовать его без прямого импорта моделей, чтобы избежать возможного циклического импорта в будущем.

Код: Выделить всё

# documents/models.py
class Document(SQLModel, table=True):
__tablename__ = "documents"
id: int | None = Field(primary_key=True, default=None)
name: str = Field(max_length=128)
vehicles: list["Vehicle"] = Relationship(back_populates="documents", link_model=VehicleDocument)

class VehicleDocument(SQLModel, table=True):
__tablename__ = "vehicle_documents"
id: int | None = Field(primary_key=True, default=None)
vehicle_id: int = Field(foreign_key="vehicles.id")
document_id: int = Field(foreign_key="documents.id")

# vehicles/models.py
class Vehicle(VehicleBase, table=True):
__tablename__ = "vehicles"
id: int | None = Field(primary_key=True, default=None)
documents: list["Document"] = Relationship(back_populates="vehicles", link_model=VehicleDocument)
Чтобы использовать его как есть, мне нужно импортировать VehicleDocument из document/models.py в cars/models.py. Я хочу избежать этого. Я попытался использовать эти параметры в последней строке кода выше: Они завершились с ошибкой:

"NoInspectionAvailable: Нет система проверки доступна для объекта типа "

Есть ли другой способ соединения этих моделей?

Подробнее здесь: https://stackoverflow.com/questions/792 ... rts-in-fas
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»