[pyar] Consulta flask+sqlalchemy+tagging
Claudio
claudiobidau en gmail.com
Vie Mayo 25 18:19:08 ART 2012
Hola amigos
Estoy intentando implementar un sistema simple de tags pero se me complica
el tema de los "tags duplicados".
Tengo el siguiente modelo (bienvenidas sugerencias de mejoras):
tags = db.Table('tags',
db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')),
db.Column('post_id', db.Integer, db.ForeignKey('post.id'))
)
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
titulo = db.Column(db.String(80))
cuerpo = db.Column(db.String(120))
pub_date = db.Column(db.DateTime(), default=datetime.utcnow)
tags = db.relationship('Tag', secondary=tags, backref=db.backref('posts',
lazy='dynamic'))
def __init__(self, *args, **kwargs):
super(Post, self).__init__(*args, **kwargs)
def __repr__(self):
return self.titulo
def get_pub_date(self):
return self.pub_date
class Tag(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), unique=True, nullable=False)
def __init__(self, *args, **kwargs):
super(Tag, self).__init__(*args, **kwargs)
def __repr__(self):
return self.name
En la consola:
p = Post(titulo='bla', cuerpo='bla')
p.tags = [Tag(name='uno'), Tag(name='dos')]
db.session.add(p)
db.session.commit(p)
-- hasta acá todo bien, persiste el post, los 2 tags y crea la relación
p2 = Post(titulo='bla2', cuerpo='lorem')
p2.tags = [Tag(name='uno'), Tag(name='tres')]
db.session.add(p2)
db.session.commit(p2) // explota todo, porque intenta crear el tag "tres"
que ya existe :S
Leí en la documentación sobre el metodo merge, pero no se como hacerlo
funcionar.
Saludos y muchas gracias!
Claudio
PD: es mi primer desarrollo en python :P
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120525/5377a4d4/attachment.html>
More information about the pyar
mailing list