2015-03-14 6 views
6

Ich habe zwei Fremdschlüssel in einer Entität, die auf eine andere Entität verweist. Hier ist, wie esFlask foreign_keys zeigt immer noch AmbiguousForeignKeysError

class Review(db.Model): 
     __tablename__ = 'Review' 
     id = db.Column(db.Integer, primary_key = True) 
     user_id = db.Column(db.Integer, db.ForeignKey('User.id'), nullable=False) 
     business_user_id = db.Column(db.Integer, db.ForeignKey('User.id'), nullable=False) 
     user = db.relationship('User', foreign_keys=[user_id]) 
     business_user = db.relationship('User', foreign_keys=[business_user_id]) 

und

class User(db.Model): 
    __tablename__ = 'User' 
    id = db.Column(db.Integer, primary_key = True) 
    reviews = db.relationship('Review', backref='user', 
          lazy='dynamic') 

Allerdings sieht es nach wie vor zeigt mir eine Fehlermeldung,

gibt es mehrere Fremdschlüssel Pfade die Tabellen zu verknüpfen. Geben Sie das ‚FOREIGN_KEYS‘ Argument, eine Liste der Spalten bereitzustellen, die soll, die einen Fremdschlüssel Bezug auf die Mutter Tabelle

Die obige Abhilfe gezählt werden soll, was ich von einigen anderen Beiträgen bekommen. Ich habe viele Male nachgesehen und gewechselt und immer noch kein Glück. Ich frage mich, ob es schon stimmt oder etwas fehlt. Brauchen Sie Hilfe

+0

Haben Sie jemals die Lösung dafür gefunden? Ich habe einige Zeit damit verbracht, eine Antwort zu finden, konnte sie aber nicht zur Arbeit bringen. –

+0

Ich habe die Antwort gepostet –

Antwort

6

Schließlich habe ich die Problemumgehung nach dem Versuch, herauszufinden. In meinem Fall muss ich backref in Review-Klasse nicht setzen. Stattdessen sollte ich den Benutzer backref in User Klasse selbst setzen. So sollte es wie unten aussehen

class Review(db.Model): 
    __tablename__ = 'Review' 
    id = db.Column(db.Integer, primary_key = True) 
    user_id = db.Column(db.Integer, db.ForeignKey('User.id'), nullable=False) 
    business_user_id = db.Column(db.Integer, db.ForeignKey('User.id'), nullable=False) 
    user = relationship('User', backref='user_reviews', foreign_keys=user_id) 
    business_user = relationship("User", backref='business_user_reviews', foreign_keys=[business_user_id]) 

class User(db.Model): 
    __tablename__ = 'User' 
    id = db.Column(db.Integer, primary_key = True) 

Hier haben beide Arten von Benutzer viele Bewertungen. Dann, wenn ich die Liste der Bewertungen der beiden User erhalten müssen, was ich tun kann ist

user = User.query.get(id) 
user_reviews = User.user_reviews 
business_user_reviews = user.business_user_reviews 

Und ich bin nicht mehr über diesen Fehler ausgeführt wird.

Verwandte Themen