Я выдергиваю волосы из-за этого, так как у меня не было никаких проблем с flask или WTForms, и я пока создал довольно большое приложение. Вот что я пытаюсь сделать.
У меня есть 2 модели данных, подписка и интервал выставления счетов. Между ними есть внешний ключ, и все работает хорошо:
class Subscriptions(db.Model):
__tablename__ = 'subscriptions'
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(64))
description = db.Column(db.String(255))
lastcrawled = db.Column(db.Date)
lastcheckedby = db.Column(db.Integer)
isActive = db.Column(db.Boolean, default = False)
datecreated = db.Column(db.Date, default = datetime.date.today())
pricing = db.Column(db.Numeric(10, 2), nullable=True)
alias = db.Column(db.String(64))
isQuote = db.Column(db.Boolean, default = True)
billinginterval_id = db.Column(db.Integer, db.ForeignKey('billinginterval.id'))
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
class BillingInterval(db.Model):
__tablename__ = 'billinginterval'
id = db.Column(db.Integer, primary_key = True)
interval = db.Column(db.String(64))
subscriptions = db.relationship('Subscriptions', backref='billinginterval')
def __str__(self):
return self.interval
У меня есть форма, в которой пользователь может добавить еще одну подписку:
class AddSubscription(FlaskForm):
name = StringField("Name", validators=[DataRequired()])
description = TextAreaField('Description')
pricing = IntegerField('Pricing')
billinginterval = SelectField('Billing Interval',choices=BillingInterval.query.all())
submit = SubmitField("Add Subscription")
И, наконец, вот мой шаблон:
{% extends "layout.html" %}
{% block content %}
<form method="POST">
{# This hidden_tag is a CSRF security feature. #}
{{ form.hidden_tag() }}
{{ form.name.label }} {{ form.name() }}<br>
{{ form.description.label }} {{ form.description() }}<br>
{{ form.pricing.label }} {{ form.pricing() }}<br>
{{ form.billinginterval.label }} {{ form.billinginterval() }}<br>
{{ form.submit() }}
</form>
{% endblock %}
Мне нужно иметь «SelectField», который заполняется из таблицы «billinginterval» (отображает интервал в качестве вариантов выбора), а затем записывает поле billinginterval.id в модель подписки.
Все работает безупречно, пока я не попробую добавить раскрывающийся список интервала выставления счетов. Просто не получается.
Все перепробовал, не получается заставить работать. Любая помощь будет признательна. Спасибо!