У меня создано отношение «один ко многим», но я не уверен, как я могу опубликовать организацию, которая была выбрана из выпадающего меню, с новыми деталями сайта, которые были созданы.
Будет развернут базовый макет страницы с именами организаций, которые уже были созданы и сохранены в таблице организации в БД. Конечный пользователь выбирает организацию, затем вводит новое имя для сайта и нажимает кнопку «Отправить».
Код ниже и любая помощь будет оценена по достоинству.
App.py
@app.route('/add_site')
def add_site():
""" Find and show field from db for the user to fill in """
form = AddSite()
organisations = db.session.query(Organisation)
return render_template('add_site.html', form=form,
organisations=organisations)
@app.route('/insert_site', methods=['GET', 'POST'])
def insert_site():
""" Insert populated fills from add_site to db """
form = AddSite()
site_name = Site(site_name=form.site_name.data)
db.session.add(site_name)
db.session.commit()
return redirect(url_for('get_org'))
forms.py
class AddSite(FlaskForm):
""" Adding new site """
site_name = StringField('Site Name', validators=[DataRequired()])
submit = SubmitField('Add Site')
Models.py
class Organisation(db.Model):
""" Table to store organisation details """
id = db.Column(db.Integer, primary_key=True, index=True,
unique=True)
org_name = db.Column(db.String())
timestamp = db.Column(db.DateTime, index=True,
default=datetime.utcnow)
sites = db.relationship('Site', backref='org_name', lazy='dynamic')
def __init__(self, org_name):
self.org_name = org_name
class Site(db.Model):
""" Table to store site details """
id = db.Column(db.Integer, primary_key=True)
site_name = db.Column(db.String())
timestamp = db.Column(db.DateTime, index=True,
default=datetime.utcnow)
org_id = db.Column(db.Integer, db.ForeignKey('organisation.id'))
def __init__(self, site_name):
self.site_name = site_name
add_site.html
<form action=" {{url_for('insert_site') }}" method="POST" class="col-12">
{{ form.hidden_tag() }}
<div class="col s12">
<select name="organisation_list">
<option value="" disabled selected>Choose an
Organisation</option>
{% for org in organisations %}
<option value ="{{org.org_name}}">{{org.org_name}}</option>
{% endfor %}
</select>
<label>Organisations</label>
</div>
<div class="row">
<div class="col s12">
{{ form.site_name.label }}
{{ form.site_name(size=32) }}
</div>
</div>
<div class="row">
<buttom>
{{ form.submit() }}
</buttom>
</div>
</form>
Конечным результатом является сопоставление нескольких сайтов с организацией. Это так, я могу создать страницу, которая покажет все сайты, которые находятся в организации.