Не удается сохранить текущий идентификатор пользователя в новой таблице с помощью Flask - PullRequest
0 голосов
/ 13 октября 2018

, так как через несколько дней у меня возникли проблемы с Flask и SQLAlchemy

Я ищу небольшое приложение, которое позволит людям с биполярным расстройством отслеживать свое настроение и делиться результатами с врачами.

Моя проблема появляется в процессе регистрации.Пользователи появляются в таблице User после регистрации, но не появляются в таблице Doctor после заполнения формулы.Я не могу вставить данные в таблицу Доктора.У меня нет ошибок, которые появляются.Я могу сделать это вручную, но не через форму.

Проблема, похоже, не на уровне формы или шаблона.Я пришел из моего способа получить user.id в представлениях ...

Мои модели:

class User(UserMixin, db.Model) :
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(20), unique = True, nullable = False)
    password = db.Column(db.String(60), nullable=False)

    def __init__(self, id, name, email, password):
        self.email = email
        self.password = password


class Doctor(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    firstname  = db.Column(db.String(20), nullable = False)
    lastname  = db.Column(db.String(20), nullable = False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    user = relationship("User", backref=backref("user", uselist=False))

    def __init__(self, id, firstname, lastname, user_id):
        self.firstname = firstname
        self.lastname = lastname
        self.user_id = current_user.id

Мои просмотры:

@app.route('/signup', methods=['GET', 'POST'])
def signup():
    form = SignupForm()

    if form.validate_on_submit():
        hashed_password = generate_password_hash(form.password.data, method='sha256')
        new_user = User(id, name = form.name.data, email = form.email.data, password = hashed_password)
        db.session.add(new_user)
        db.session.commit()

        return redirect(url_for('login'))
    return render_template('signup.html', form=form)


@app.route('/add_doctor', methods=['GET', 'POST'])
@login_required
def add_doctor():
    form = DoctorForm()

    if form.validate_on_submit():
        user_id = current_user.id
        new_doctor = Doctor(id, firstname = form.firstname.data, lastname = form.lastname.data, user_id = user_id)
        db.session.add(new_doctor)
        db.session.commit

        return 'NEW DOCTOR HAS BEEN ADDED'

    return render_template('doctor.html', form=form)

Спасибо!

РЕДАКТИРОВАТЬ:

Я обнаружил проблему !!!

db.session.commit

должно быть:

db.session.commit()

и:

new_doctor = Doctor(id, firstname = form.firstname.data, lastname = form.lastname.data, user_id = user_id)

должно быть:

new_doctor = Doctor(id, firstname = form.firstname.data, lastname = form.lastname.data, user_id = current_user.id)

Это были глупые ошибки!

...