首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReferenceField和Wtforms

ReferenceField和Wtforms
EN

Stack Overflow用户
提问于 2014-06-20 09:27:03
回答 1查看 570关注 0票数 0

我和mongoengine和wtform有联系。

我试图使用User class将权限属性为Role class,但不能将Role class外键属性为User class

这是我的密码:

代码语言:javascript
复制
# On class File
from 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 
from 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) for r in Role.objects])

保存时,我收到以下错误消息:

代码语言:javascript
复制
ValidationError: ValidationError (User:53a14fb0cdc4674abf452f2d) (A ReferenceField only accepts DBRef or documents: ['role'])

我试着用rr._object_key()改造rr._object_key(),但是没有结果。

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-24 09:09:58

我找到了答案:SelectField不返回ReferenceField的好类型元素。

这是我的新代码:

代码语言:javascript
复制
# form File
class UserEditForm(Form):
  username = StringField(u'Username', [validators.required()])
  role = SelectField(u'Role', [validators.required()], choices=[(r.num, r.name) for 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)
    return {"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()
     return redirect("/user_edit/" + id)
   return response("form error validation")

祝您今天愉快

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24324059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档