Saturday, 15 February 2014

python - ReferenceField and Wtforms -



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