Sto lavorando su un piccolo progetto in cui sto usando Flask-SqlAlchemy per implementare una relazione di elenchi di adiacenze. Ho un modello (tabella) che ha un attributo per db.Relationship()
che fa riferimento alla colonna parent_id
della stessa tabella.Elenco di adiacenza di Flask-SqlAlchemy Rapporto backfref error inaspettato
Ecco il codice seguente (parziale):
class Node(db.Model):
id = db.Column(db.Integer, primary_key = True)
title = db.Column(db.String(80))
folder_id = db.Column(db.Integer, db.ForeignKey('node.id'))
children = db.relationship('Node', backref = 'parent', remote_side=[id])
Quando provo ad aggiungere una cartella figlio a una cartella principale utilizzando l'attributo backref sul bambino in Python Shell come ad esempio il seguente codice (parziale):
parentNode = Node('title1')
db.session.add(parent)
db.session.commit()
childNode = Node('title2')
child.parent = parentNode
Tuttavia, ottengo i seguenti erros dopo provo che nella shell Python:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Incompatible collection type: Node is not list-like
Ho letto i documenti SqlAlchemy per capire una soluzione e hanno una sintassi simile per le relazioni dell'elenco di adiacenze. Ha un esempio simile ma non mostra come si possa aggiungere un nodo genitore a un nodo figlio come stavo provando nella shell. La ragione per aggiungere il nodo genitore nella proprietà backref del figlio è che funzioni con relazioni uno-a-molti. Qualsiasi aiuto nel trovare il problema con il codice sarebbe molto apprezzato ... Non esitate a suggerire soluzioni alternative.
Grazie!
Van, grazie per fornire il frammento e sottolineando il problema. Ho appena configurato la relazione nel modo in cui hai appena mostrato e indovina cosa, funziona esattamente come me l'aspettavo! Grazie mille ... Apprezzo davvero la pronta assistenza. – shafayet