у меня 3 стола; пользователь, местоположение и местоположение_фаворит.
location_favorite вроде таблицы ассоциации. Я пытаюсь создать список любимых мест для пользователя, используя эту таблицу.
пользовательский класс выглядит так:
import datetime
from sqlalchemy import Column, Integer, String, Date, ForeignKey
from sqlalchemy.orm import relationship
from model import Base
from model.address import Address
from model.group import Group
from model.location_favorite import LocationFavorite
class User(Base):
__tablename__ = 'users'
id = Column(Integer, nullable=False, unique=True, primary_key=True)
username = Column(String, nullable=False, unique=True)
password = Column(String, nullable=False)
reset_token = Column(String, default=None)
email = Column(String, nullable=False, unique=True)
account_status = Column(Integer, nullable=False, default=0)
user_group = Column(Integer, ForeignKey("user_groups.id"), \
nullable=False, default=1)
registration_date = Column(Date, nullable=False,
default=datetime.datetime.now())
last_online = Column(Date, default=datetime.datetime.now())
# Relationships
address = relationship(Address, uselist=False, back_populates="user")
group = relationship(Group, back_populates='users')
spots = relationship("Location")
favorite_spots = relationship('Location', secondary='location_favorite',
backref='favorited_by')
класс местоположения выглядит так:
class Location(Base):
__tablename__ = 'location'
id = Column(Integer, primary_key=True, nullable=False)
title = Column(String, unique=True)
description = Column(String, nullable=False)
creator_id = Column(Integer, ForeignKey('users.id'))
latitude = Column(Float)
longtitude = Column(Float)
creation_date = Column(Date, default=datetime.now)
# Relationships
creator = relationship('User', foreign_keys=creator_id,
back_populates='spots')
events = relationship('Event')
favorited_by = relationship('User', secondary='location_favorite',
backref='favorite_spots')
и класс location_favorite выглядит следующим образом:
class LocationFavorite(Base):
__tablename__ = 'location_favorite'
user_id = Column(Integer, ForeignKey('user.id'), primary_key=True)
location_id = Column(Integer, ForeignKey('location.id'),
primary_key=True)
creation_date = Column(Date, default=datetime.now)
Теперь это дает мне следующее исключение:
Could not determine join condition between parent/child tables on
relationship User.favorite_spots
Я полагаю, что это логический ответ, потому что пользователь не имеет никакой ссылки на location_favorite, кроме user_id .., который является частью составного первичного ключа. Я просто не могу понять, как лучше создать эти отношения.