Как объединить два пользовательских ввода в приложении flask? - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть приложение в flask, которое имеет в качестве пользовательского ввода два поля, однако я хочу объединить входные данные для запроса результата в таблице sql с sqlalchemy, однако оно продолжает выдавать мне ошибку:

TypeError: неподдерживаемые типы операндов для +: 'NoneType' и 'NoneType'

@search.route('/specie_results', methods=['GET','POST'])
def specie_results():
    form = SpecieSearchForm()
    genus = form.genus.data
    specie = form.specie.data
    species = genus + specie
    species_req = Files.get_by_species(species)
    return render_template ('specie_results.html', form=form, species_req=species_req)

Это мой код для формы

class SpecieSearchForm(FlaskForm):
    genus = StringField('genus', validators=[DataRequired(), Length(max=64)])
    specie = StringField('specie', validators=[DataRequired()])
    submit = SubmitField('specie search’)

Код для модели:

class Files(db.Model):
    __tablename__ = 'files'
    id = db.Column(db.Integer, primary_key=True)
    filename = db.Column(db.String(100), unique=False, nullable=False)
    intensity = db.Column(db.Float, unique=False, nullable=False)
    mz = db.Column(db.Float, unique=False, nullable=False)
    origin = db.Column(db.String(100), unique=False, nullable=False)
    species = db.Column(db.String(60), unique=False, nullable=False)
    wd = db.Column(db.String(60), unique=False, nullable=False)
    time_created = db.Column(db.DateTime(timezone=True), server_default=func.now())
    time_updated = db.Column(db.DateTime(timezone=True), onupdate=func.now())

    def save(self):
        if not self.id:
            db.session.add(self)
            db.session.commit()
    def delete(self):
        db.session.delete(self)
        db.session.commit()

    @staticmethod
    def get_all():
        return Files.query.all()

    @staticmethod
    def get_by_species(species):
        return Files.query.filter_by(species=species).all()

Мне нужно объединить род и spe cie, чтобы соответствовать виду поля, но я не знаю, как это сделать без ошибки.

1 Ответ

0 голосов
/ 07 апреля 2020

Данные формы кажутся пустыми. Вот почему он не возвращает ни одного типа. Вы уже добавили валидаторы в класс, поэтому проверьте форму, прежде чем работать с данными.

Измените код на этот и проверьте.

@search.route('/specie_results', methods=['GET','POST'])
def specie_results():
    form = SpecieSearchForm()
    if form.validate_on_submit():
        genus = form.genus.data
        specie = form.specie.data
        species = genus + specie
        species_req = Files.get_by_species(species)
    return render_template ('specie_results.html', form=form, species_req=species_req)
...