Python SQLAlchemy:如何从其他模型继承数据并将其设置为默认值?
我还不习惯Python SQLAlchemy:如何从其他模型继承数据并将其设置为默认值?,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,我还不习惯SQLAlchemy,所以这可能是个愚蠢的问题。 我第一次尝试使用Flask和SQLAlchemy制作web应用程序。 我要做的是从其他模型继承数据并将其设置为默认值 我所做的是这样的 class User(UserMixin, db.Model): username = db.Column(db.String(64), index=True, unique=True) upload_photo = db.relationship('Photo', backref='u
SQLAlchemy
,所以这可能是个愚蠢的问题。
我第一次尝试使用Flask
和SQLAlchemy
制作web应用程序。
我要做的是从其他模型继承数据并将其设置为默认值
我所做的是这样的
class User(UserMixin, db.Model):
username = db.Column(db.String(64), index=True, unique=True)
upload_photo = db.relationship('Photo', backref='user')
class Photo(db.Model):
uploader_name = db.Column(db.String(64), db.ForeignKey('user.username'))
{% for photo in photos %}
{{ photo.user.username }}
{% endfor %}
所以我想把上传照片的用户名设置为上传者的名字。
但是当我提到uploder\u名称时,它总是'None'
。
也许我误解了关系和外国人。
我怎样才能解决这个问题?另外,请告诉我我的方式有多错误,以及如何正确使用关系
谢谢你的回复。但是输出仍然是一样的,即使我像答案一样改变了
其实我想在网页上展示,但我不能参考,即使其他东西可以参考
photos = Photo.query.with_entities(Photo.name, Photo.image, Photo.user).all()
return render_template('index.html', title='Home', photos=photos)
HTML是这样的
class User(UserMixin, db.Model):
username = db.Column(db.String(64), index=True, unique=True)
upload_photo = db.relationship('Photo', backref='user')
class Photo(db.Model):
uploader_name = db.Column(db.String(64), db.ForeignKey('user.username'))
{% for photo in photos %}
{{ photo.user.username }}
{% endfor %}
为此,它不显示任何内容,当我将其更改为{{{photo.user}
时,它显示None
我展示模型零件以防万一
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
photos = db.relationship('Photo', back_populates='user')
class Photo(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
user = db.relationship('User', back_populates='photos')
我检查了它在解释器上的工作方式,但它是相同的。您应该使用关系(在本例中,): 然后您可以在两侧访问这些对象:
user = User.query.filter_by(id = 1).first()
user.photos # Outputs all photos with user_id set to this user
photo = Photo.query.filter_by(id = 1).first()
photo.user # Outputs the user of a certain photo
您可以通过不同的方式将照片添加到应用程序中,最直接的方法是:
user = User.query.filter_by(id = 1).first()
new_photo = Photo()
user.photos.append(new_photo)
db.session.commit()
db.ForeignKey('user.username')
可能应该是db.ForeignKey('user.id')
,因为user\u id
具有整数类型。修复了代码。。。对不起,我犯了错误。。。这肯定行得通。您是否收到任何错误?我没有收到任何错误,但输出仍然为“无”。我将很快编辑我的问题。原始上传者的名字行必须像你的一样改变吗?原来的是Sting和user.username。是的。。。因为您可以使用photo.user.username