【发布时间】:2016-12-26 16:18:57
【问题描述】:
我正在尝试创建与父模型Article 相关的图片库。我有两种模型,一种用于存储上传的文件,另一种用于存储image_shots.articles.id 链接的已发布文章。
这是我的模型:
class Media(db.Model):
__tablename__ = 'media'
id = db.Column(db.Integer, primary_key=True)
caption = db.Column(db.String(500))
article = db.Column(db.Integer, db.ForeignKey('articles.id'), index=True)
posted_date = db.Column(db.DateTime)
def __init__(self, **kwargs):
super(Media, self).__init__(**kwargs)
class Article(db.Model):
__tablename__ = 'articles'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(400))
body = db.Column(db.Text)
updated_on = db.Column(db.DateTime)
view_count = db.Column(db.Integer)
image_shots = db.relationship("Media", backref="articles")
def __init__(self, **kwargs):
super(Article, self).__init__(**kwargs)
这是我的表格:
from flask_wtf import Form, validators
from wtforms import StringField, TextAreaField
from wtforms.validators import DataRequired, Length
class ArticleForm(Form):
title = StringField('Title', validators=[DataRequired(), Length(1, 64), ])
description = TextAreaField(u'Description', [validators.optional(), validators.length(max=200)])
file = FileField()
这是我的看法:
@articles.route('/new', methods=['GET', 'POST'])
def articles():
form = ArticleForm()
articles = [title for title, in db.session.query(Article)]
if request.method == 'POST'and form.validate_on_submit():
article = Article(title=form.name.data)
db.session.add(article)
db.session.commit()
flash(message='Article successfully added')
return redirect(url_for('articles.index'))
elif request.method == 'GET':
articles = [title for title, in db.session.query(Article)]
return render_template('front/articles.html', articles=articles, form=form)
有了这个,我可以保存发布的文章,但我仍然对如何获取上传的文件并将其保存在他们自己的模型中以articles.id 作为外键感到困惑。
小细节,我需要在同一个文章表单中上传多个形成图库的文件。它们如何联系起来?
【问题讨论】:
-
问题解决了吗?如果是,请接受我的回答:)
标签: flask sqlalchemy flask-sqlalchemy wtforms flask-wtforms