python - ReferenceField and Wtforms -
i have connexion problem mongoengine , wtforms.
i tried attribute permission user class
role class
can't attribute role class
foreign key user class
this code :
# on class file mongoengine import document, stringfield, referencefield class user(document): username = stringfield(unique=true) password = stringfield() role = refrencefield(role, default=role.objects.get(num=3)) class role(document): num = intfield() name = stringfield() # on form file wtforms import form, stringfield, selectfield class usereditform(form): username = stringfield(u'username', [validators.required()] role = selectfield(u'role', [validators.required()], choices = [(r.id, r.name) r in role.objects])
when saving, i've error message :
validationerror: validationerror (user:53a14fb0cdc4674abf452f2d) (a referencefield accepts dbref or documents: ['role'])
i tried remplace r.id
r
, r._object_key()
no result
thanks,
i find reply : selectfield
doesn't homecoming type element referencefield
.
so new code :
# form file class usereditform(form): username = stringfield(u'username', [validators.required()]) role = selectfield(u'role', [validators.required()], choices=[(r.num, r.name) r in role.objects], coerce=int) # controller class class edituser(methodview): def get_context(self, id): usr = user.objects.get(id=id) form = usereditform(request.form, usr) homecoming {"usr": usr, "form": form} def post(self, id): context = self.get_context(id) form = context.get("form") if form.validate(): usr = context.get("usr") form.populate_obj(usr) usr.role = role.objects.get(num=form.role.data) usr.save() homecoming redirect("/user_edit/" + id) homecoming response("form error validation")
have nice day
python flask mongoengine flask-wtforms flask-mongoengine
No comments:
Post a Comment