2017-10-06 1 views
1

wtempls_alchemy로 생성 된 Flask-SQLAlchemy 모델과 Flask-WTF 폼을 나타냅니다. 양식의 데이터에서 속성을 업데이트하기 위해 각 모델에 대한 메소드를 구현했습니다. 각각의 새로운 모델과 필드에 대해 나는이 방법들을 업데이트해야만한다. 그것은 성가시다. 더 자동적으로 만들 수있는 방법이 있습니까, 아니면 내가 사용하지 않는 라이브러리의 기능이 있습니까?WTForms 양식 데이터로 모델 업데이트

def edit_car(car_id): 
    form = CarForm(request.form) 
    if form.is_valid(): 
     car = Car.query.get_or_404(car_id) 
     car.from_form(form) # Update car fields 
     ... 
     # save car in database ... 

class Car(db.Model): 
    color = db.Column(db.String(10)) 
    ... 

    def from_form(self, form): 
     self.color = form.color.data 
     ... # all other fields 

답변

3

모델을 채우기 위해 폼의 populate_obj 방법을 사용합니다. 각 필드와 동일한 이름의 속성을 설정합니다.

form.populate_obj(car) 
db.session.commit() 

(이 사건에 있어야하지만) 행동 간단한 "필드 이름에 설정 속성"주어진 모델/형식 쌍에 적합하지 않은 경우, 당신은 방법을 대체 할 수 있습니다.

class SpecialCarForm(FlaskForm): 
    ... 

    def populate_obj(obj): 
     # mess with data, set extra fields, etc. 
     # potentially call super after 
     super().populate_obj(obj) 
관련 문제