2017-05-09 1 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, 
    }) 

(도메인에 대한 독특한 = 진정한 주)

을 이 모델의 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에도 "already exists"문제가있었습니다. 그러나 doc's solution 내 사건에 도움이 되었는가 :

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

감사합니다,이 질문이 문서의 섹션을 찾아 내게 도움이 때문이다.

관련 문제