models.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/usr/bin/env python
  2. # -*- coding=UTF-8 -*-
  3. # **************************************************************************
  4. # Copyright © 2016 jianglin
  5. # File Name: models.py
  6. # Author: jianglin
  7. # Email: xiyang0807@gmail.com
  8. # Created: 2016-07-20 17:00:08 (CST)
  9. # Last Update:星期四 2016-7-28 22:30:37 (CST)
  10. # By:
  11. # Description:
  12. # **************************************************************************
  13. from maple import db
  14. from datetime import datetime
  15. tag_topic = db.Table('tag_topic', db.Column('tags_id', db.Integer,
  16. db.ForeignKey('tags.id')),
  17. db.Column('topics_id', db.Integer,
  18. db.ForeignKey('topics.id')))
  19. tags_parents = db.Table(
  20. 'tags_parents', db.Column('tag_id', db.Integer, db.ForeignKey('tags.id')),
  21. db.Column('parent_id', db.Integer, db.ForeignKey('tags.id')))
  22. class Tags(db.Model):
  23. __tablename__ = 'tags'
  24. id = db.Column(db.Integer, primary_key=True)
  25. time = db.Column(db.DateTime, default=datetime.utcnow())
  26. tagname = db.Column(db.String(64), nullable=False)
  27. summary = db.Column(db.Text)
  28. tags = db.relationship('Topic',
  29. secondary=tag_topic,
  30. lazy='dynamic',
  31. backref="tags")
  32. parents = db.relationship(
  33. 'Tags',
  34. secondary=tags_parents,
  35. primaryjoin=(id == tags_parents.c.tag_id),
  36. secondaryjoin=(id == tags_parents.c.parent_id),
  37. backref=db.backref('children', lazy='joined'))
  38. def __str__(self):
  39. return self.tagname
  40. def __repr__(self):
  41. return '<Tags %r>' % self.tagname