2017-05-09 15 views
1

私は次のクラスがあります:私は、次のしているWTForms-Alchemyにはどのようにunique = Trueを指定しますか?

class CloakerForm(ModelForm): 
    class Meta: 
    model = Cloaker 

:WTFormによって生成されたフォームで

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, 
    }) 

(ドメインのユニーク= Trueの注)

をこのモデルの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-錬金術のウェブサイト上の既存のオブジェクトでユニークなバリデータを使用してに従ってください:

...(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を取得するにはどうすればよいですか?

答えて

0

POST/UPDATEにも「既に存在する」問題がありました。この質問は、ドキュメント内のセクションを見つける私を助けたので、

obj = MyModel.query.get(1) form = MyForm(obj=obj) form.populate_obj(obj) form.validate()

ありがとう:しかしdoc's solutionは、私の場合は助けをしました。

関連する問題