sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) Сбой ограничения NOT NULL: profile.user_id - PullRequest
0 голосов
/ 02 февраля 2019

Я новичок в базах данных и SQLAlchemy.В настоящее время я делаю веб-приложение, в котором есть пользователи, и у каждого пользователя есть свои профили.Насколько мне известно, это отношения один ко многим.Проблема в том, что когда я пытаюсь создать профиль, я получаю сообщение об ошибке целостности, и я не уверен, почему.Это код в моем файле моделей

class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key = True, autoincrement = True)
    username = db.Column(db.String(20), unique = True, nullable = False)
    email = db.Column(db.String(120), unique = True, nullable = False)
    password = db.Column(db.String(60), nullable = False)
    profiles = db.relationship('Profile', backref = 'creator', lazy = True)

    def __repr(self):
        return f"User('{self.username}', '{self.email}')"

class Profile(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    profileName = db.Column(db.String(), nullable = False)
    firstName = db.Column(db.String(20), nullable = False)
    lastName = db.Column(db.String(30), nullable = False)
    email = db.Column(db.String(), nullable = False)
    phone = db.Column(db.String(), nullable = False)
    address = db.Column(db.String(), nullable = False)
    address1 = db.Column(db.String(), nullable = True)
    city = db.Column(db.String(), nullable = False)
    state = db.Column(db.String(), nullable = False)
    zipCode = db.Column(db.String(), nullable = False)
    country = db.Column(db.String(), nullable = False)
    cc = db.Column(db.String(16), nullable = False)
    expMonth = db.Column(db.String(2), nullable = False)
    expYear = db.Column(db.String(2), nullable = False)
    cvv = db.Column(db.String(4), nullable = False)
    url = db.Column(db.String(), nullable = False)
    user_id = db.Column(db.Integer(), db.ForeignKey('user.id'), nullable = False)

Это код в моем файле маршрутов

@login_required
def newProfile():  
    form = CheckoutForm()
    if form.validate_on_submit():
        profile = Profile(profileName = form.profileName.data, firstName = form.firstName.data, lastName = form.lastName.data, 
        email = form.email.data, phone = form.phone.data, address = form.address.data, address1 = form.address1.data, city = form.city.data,
        state = form.state.data, zipCode = form.zipCode.data, country = form.country.data, cc = form.cc.data, expMonth = form.expMonth.data,
        expYear = form.expYear.data, cvv = form.cvv.data, url = form.url.data, creator = current_user)
        db.session.add(profile)
        db.session.commit()
        flash(f"Profile Created!")
        return redirect(url_for('profiles'))
    return render_template('newProfile.html', title="New Profile", form = form)

Я предполагаю, что это что-то с моими профилями и переменными user_id, но я могуне понять что.Я посмотрел на документацию и посмотрел на некоторые решения по переполнению стека, но все еще не мог заставить его работать.Снова извините, если это вопрос n00b.Я новичок в создании веб-приложений и использовании баз данных, поэтому есть много вещей, которые я все еще изучаю и пытаюсь понять!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...