From 501e27400bdc59f1e2356193dda437c79cda33d2 Mon Sep 17 00:00:00 2001 From: Zichao Lin Date: Mon, 6 Jul 2026 08:39:33 +0800 Subject: [PATCH] fix(models): resolve ambiguous foreign keys between User and InviteCode --- app/models.py | 4 ++-- test_error.py | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 test_error.py diff --git a/app/models.py b/app/models.py index c21c43f..7374f42 100644 --- a/app/models.py +++ b/app/models.py @@ -23,7 +23,7 @@ class User(Base): profiles = relationship("Profile", back_populates="user", cascade="all, delete-orphan") sessions = relationship("UserSession", back_populates="user", cascade="all, delete-orphan") - invite_codes = relationship("InviteCode", back_populates="creator", cascade="all, delete-orphan") + invite_codes = relationship("InviteCode", back_populates="creator", foreign_keys="InviteCode.created_by", cascade="all, delete-orphan") invited_by_code = relationship("InviteCode", foreign_keys=[invited_by_code_id]) @@ -38,7 +38,7 @@ class InviteCode(Base): created_by = Column(Integer, ForeignKey("users.id", ondelete="SET NULL"), nullable=True) created_at = Column(DateTime, default=_utcnow) - creator = relationship("User", back_populates="invite_codes") + creator = relationship("User", back_populates="invite_codes", foreign_keys=[created_by]) registered_users = relationship("User", back_populates="invited_by_code", foreign_keys="User.invited_by_code_id") diff --git a/test_error.py b/test_error.py new file mode 100644 index 0000000..33052d6 --- /dev/null +++ b/test_error.py @@ -0,0 +1,8 @@ +from app.main import app +from fastapi.testclient import TestClient +c = TestClient(app) +import sqlite3 +conn = sqlite3.connect('data.db') +cur = conn.execute('SELECT id, username, invited_by_code_id FROM users') +print(cur.fetchall()) +conn.close()