Не могу понять как реализовать стадию валидации для редактирования профиля. Как реализовать форму редактирования профиля без JS? Если пользователь меняет, например, почтовый адрес, то в валидацию приходят все поля, в том числе и те, которые не менялись. Для всех данных проходит валидация на уникальность и естественно не меняющиеся данные уже есть у пользователя.
Или я неправильно делаю, что не разделяю админку и функцию пользователя менять свои данные?
class User(UserMixin, SurrogatePK, Model):
"""A user of the app."""
__tablename__ = 'users'
username = Column(db.String(80), unique=True, nullable=False)
email = Column(db.String(80), unique=True, nullable=False)
password = Column(db.Binary(128), nullable=True)
class UserEditForm(Form):
"""Register form."""
username = StringField('Username',
validators=[Optional(), Length(min=3, max=25)])
email = StringField('Email',
validators=[Email(), Length(min=6, max=40)])
password = PasswordField('Password',
validators=[Optional(), Length(min=6, max=40)])
def __init__(self, *args, **kwargs):
"""Create instance."""
super(UserEditForm, self).__init__(*args, **kwargs)
self.user = None
def validate(self):
"""Validate the form."""
initial_validation = super(RegisterForm, self).validate()
if not initial_validation:
return False
user = User.query.filter_by(username=self.username.data).first()
if user:
self.username.errors.append('Username already registered')
return False
user = User.query.filter_by(email=self.email.data).first()
if user:
self.email.errors.append('Email already registered')
return False
return True