python - 数据库模型没有属性
问题描述
这是一个带有 Flask_sqlalchemy 的多对多数据库。我相信我已经精确地遵循了这些示例,但是AttributeError: 'Song' object has no attribute 'category'
在运行它时我得到了,但我无法弄清楚出了什么问题。
我怎样才能解决这个问题?
association_table = db.Table('association',
db.Column('songs_id', db.Integer,
db.ForeignKey('songs.id')),
db.Column('genres_id', db.Integer,
db.ForeignKey('genres.id'))
)
class Song(db.Model):
__tablename__ = 'songs'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(80), index=True, unique=True, nullable=False)
artist = db.Column(db.String(30), primary_key=False,
unique=False, nullable=False)
added = db.Column(db.Date, nullable=False)
genres = db.relationship("Genre", secondary=association_table, backref=db.backref('songs'))
def __repr__(self):
return '{}'.format(self.title)
class Genre(db.Model):
__tablename__ = 'genres'
id = db.Column(db.Integer, primary_key=True)
category = db.Column(db.String(80), index=True,
unique=True, nullable=False)
我的插入看起来像这样:
song = Song(title="test title", artist="test name")
genre = Genre(category="test category")
song.category.append(genre)
db.session.add(song)
db.session.commit()
编辑:我也有查询问题。
test = Genre.query.filter(Genre.songs.any(title="that song")).all()
print(test)
打印[<Genre 3>, <Genre 4>, <Genre 5>]
而不是流派。为什么是这样?
解决方案
您的Song
课程没有类别名称的属性,但您正试图将您的流派附加到它。你的意思是这样做吗?
song = Song(title="test title", artist="test name")
genre = Genre(category="test category")
song.genres.append(genre) # You wrote category, but your class only has a "genres" relationship
db.session.add(song)
db.session.commit()
推荐阅读
- html - 如何使用 boostrap 在移动设备中隐藏 div?
- php - 查找多维数组中的每个子数组,如果固定位置的元素是该子数组的最大值
- r - 如何检查 R Dataframe 中特定列的每个值是否存在多个字符串?
- asp.net-core - POST null 因为属性类型不匹配?
- r - 如何使用top_n进行条件提取
- node.js - RegEx 的 MongoDB 性能问题
- html - 使用预先应用的过滤器为打开的侧面弹出窗口生成 Amazon 链接
- excel - 计算 2 个日期之间的活动成员 PowerPivot DAX
- php - 如何使用 PHP 解析 XML
- javascript - Google Apps 脚本 - 无法使用 concat 设置公式