def save(self): """ saves changes on book object, or creates new m2m changes are handled in BookBorm.save_m2m returns self.obj """ if not self.obj: self.obj = Book(title=unicode(self.title.data)) else: self.obj.title = self.title.data return self.obj
class BookForm(Form): """ Form for adding editing Book instances """ title = TextField('title', validators=[Required(), Length(min=1, max=256)]) authors = AuthorsTagListField('authors') def __init__(self, *args, **kwargs): self.obj = kwargs.get('obj', None) super(BookForm, self).__init__(*args, **kwargs) def get_instance(self): return self.obj def save(self): """ saves changes on book object, or creates new m2m changes are handled in BookBorm.save_m2m returns self.obj """ if not self.obj: self.obj = Book(title=unicode(self.title.data)) else: self.obj.title = self.title.data return self.obj def save_m2m(self): """ updates authors of book returns True if there were some actual changes and book object need to be commited """ if self.authors.data: ids = set(self.authors.data) return self.obj.update_authors(ids) return False