【发布时间】:2017-10-08 04:06:48
【问题描述】:
我有以下课程:
class Cloaker(db.Model):
id = db.Column(db.Integer, primary_key=True)
domain = db.Column(db.String(32), unique=True, nullable=False, info={
'description': 'Raw Domain Only (no www). i.e. hello.com',
'validators': raw_domain_validator,
})
(注意域的 unique=True)
使用 WTForm 生成的表单:
class CloakerForm(ModelForm):
class Meta:
model = Cloaker
我有以下代码来处理这个模型的 CRUD:
@cloaker_bp.route('/new/', methods=['GET', 'POST'])
@cloaker_bp.route('/<cloaker_id>/', methods=['GET', 'POST'])
def cloaker(cloaker_id=None):
cloaker = Cloaker.query.get(cloaker_id) if cloaker_id else Cloaker()
if request.method == 'GET':
form = CloakerForm(obj=cloaker)
form.populate_obj(cloaker)
else:
form = CloakerForm(request.form)
if form.validate():
form.populate_obj(cloaker)
db.session.add(cloaker)
db.session.commit()
return redirect(url_for('.list_cloakers'))
return render_template('cloaker/single.html', form=form, cloaker=cloaker)
当我更新一个对象时,我总是收到Already exists. 的域。
当我在 wtforms-alchemy 的网站上关注 Using unique validator with existing objects 时:
...(from the CRUD view)...
else:
form = CloakerForm(obj=cloaker)
#form = CloakerForm(request.form)
form.populate_obj(cloaker)
if form.validate():
db.session.add(cloaker)
db.session.commit()
我收到This field is required. 的域名。如果我遵循他们的建议,我不明白 WTForms-Alchemy 如何从 request.form 获取他们的数据。
如何让 unique=True 处理我的视图?
【问题讨论】:
标签: python flask sqlalchemy wtforms