Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- association_table = Table('association', Base.metadata,
- Column('book_id', Integer, ForeignKey('Book.id')),
- Column('form_id', Integer, ForeignKey('Form.id'))
- )
- class Book(Base):
- __tablename__ = 'Book'
- name = Column(String(80), nullable = False, unique=True)
- id = Column(Integer, primary_key = True)
- author = Column(String(30))
- language = Column(String(30))
- category_id = Column(Integer, ForeignKey('Category.id'), nullable = False)
- category = relationship('Category')
- forms = relationship("Form", secondary=association_table, back_populates="books")
- def __repr__(self):
- return '<Book %r>' % self.name
- class Form(Base):
- __tablename__ = 'Form'
- name = Column(String, nullable = False)
- id = Column(Integer, primary_key=True)
- books = relationship("Book", secondary=association_table, back_populates="forms")
- def __init__(self, name):
- self.name = name
- def __repr__(self):
- return self.name
- @app.route('/books/new/', methods=['GET', 'POST'])
- def newBook():
- categories = session.query(Category).all()
- forms = session.query(Form).all()
- #languages = session.query(Languages).all()
- if request.method == 'POST':
- newBook = Book(name = request.form['name'],
- author = request.form['author'],
- category = session.query(Category).filter_by(name=request.form.get('category')).one(),
- forms = [Form(name) for name in request.form.getlist('form')],
- #works, I get both elements in the list, but I create new Form object
- forms = [session.query(Form).filter_by(name=request.form.get('form')).one()],
- #works, I do not create new Form object, but I get only one element in the list.
- language = request.form['language'])
- session.add(newBook)
- session.commit()
- flash(newBook.name+'book, in category '+newBook.category.name+' added!')
- return redirect(url_for('showBooks'))
- else:
- return render_template('newBook.html', languages=languages, categories=categories, forms=forms)
- <p>Choose Form</p>
- <select name=form method="GET" action="/" multiple>
- {% for form in forms %}
- <option value= "{{form}}" SELECTED>{{ form }}</option>"
- {% endfor %}
- </select>
Add Comment
Please, Sign In to add comment