首页 > 解决方案 > psycopg2.errors.NotNullViolation) el valor null para la columna «name» viola la restrictción not null

问题描述

我正在尝试为我的博客创建用户,但是当我尝试代码的功能时,它会给我一个错误,有人可以帮助我吗?

Error MSG

(psycopg2.errors.NotNullViolation) el valor null para la columna «name» viola la restricción not null
models,py
class User(db.Model, UserMixin):
    __tablename__ = 'blog_user'
    __table_args__ = { 'extend_existing': True}
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=False)
    email = db.Column(db.String(256), unique=True, nullable=False)


def show_signup_form():
    if current_user.is_authenticated:
        return redirect(url_for('public.index'))
    form = SignupForm()
    error = None
    if form.validate_on_submit():
        name = form.name.data
        email = form.email.data
        password = form.password.data
# Comprobamos que no hay ya un usuario con ese email o nombre
        user = User.get_by_email(email)
        name = User.get_by_name(name)
        
        if user is not None:
            error = f'El email {email} ya está siendo utilizado por otro usuario'
        elif name is not None:
            error = f'El Nombre de Invocador {name} ya está siendo utilizado por otro usuario si crees que se trata de un plagio contactate con nosotros'

 # Creamos el usuario y lo guardamos
  user = User(name=name, email=email,region=region, mainl=mainl, main2=main2)
            user.set_password(password)
            user.save()
            # Enviamos un email de bienvenida
            send_email(subject='Bienvenid@ al U-ProTeam',
                       sender=current_app.config['DONT_REPLY_FROM_EMAIL'],
                       recipients=[email, ],
                       text_body=f'Hola {name}, bienvenid@ a U-ProTeam',
                       html_body=f'<p>Hola <strong>{name}</strong>, bienvenid@ a U-ProTeam</p>')
            # Dejamos al usuario logueado
            login_user(user, remember=True)
            next_page = request.args.get('next', None)


class SignupForm(FlaskForm):
    name = StringField('Nombre de Invocador', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired()])
    password2 = PasswordField('Repeat Password', validators=[DataRequired(), EqualTo('password')])
    email = StringField('Email', validators=[DataRequired(), Email()])



如果其余字段接受数据没有问题,我不明白为什么会出现错误。同样,当我删除 null 时,用户将我保存为 null 名称,这对我开发其余代码没有帮助

标签: pythonpostgresqlflask-sqlalchemy

解决方案


谢谢,我已经发现错误是我有双重引用的名称,这就是为什么它没有保存名称,因为它对数据库进行了查询,结果将我抛出了 name = null 结果


推荐阅读