, так как через несколько дней у меня возникли проблемы с 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)
Это были глупые ошибки!