Python 如何在Google AppEngine上的djangoforms.ModelForm中使用ListProperty(users.user)?

Python 如何在Google AppEngine上的djangoforms.ModelForm中使用ListProperty(users.user)?,python,google-app-engine,single-sign-on,Python,Google App Engine,Single Sign On,我一直在四处寻找如何做到这一点的信息。基本上我有一个模型: class SharableUserAsset(db.Model): name = StringProperty() users = ListProperty(users.User) 我的问题是: 在用户未经身份验证、visa vi邀请联系人列表等情况下,将用户与该值关联的最佳方式是什么 有没有一种合理的方法可以在djangoforms.ModelForm中轻松呈现列表控件 一旦用户登录,我希望能够检查该用户是否在列表中有任何

我一直在四处寻找如何做到这一点的信息。基本上我有一个模型:

class SharableUserAsset(db.Model):
  name = StringProperty()
  users = ListProperty(users.User)
我的问题是:

  • 在用户未经身份验证、visa vi邀请联系人列表等情况下,将用户与该值关联的最佳方式是什么
  • 有没有一种合理的方法可以在djangoforms.ModelForm中轻松呈现列表控件
  • 一旦用户登录,我希望能够检查该用户是否在列表中有任何数量的SharableUserAsset类“记录”,我该怎么做
  • 用户是否评估为与电子邮件地址匹配,或者是否有方法根据电子邮件地址查找有效用户
  • 在查询中,比较列表属性 对某个值执行测试 列表成员:list_属性= 值测试是否显示该值 名单上的任何地方

    因此,要查找与当前用户关联的所有
    SharableUserAsset
    s,只需如下查询:

    user = users.get_current_user()
    assets = SharableUserAsset.gql("WHERE users = :1", user)
    
    这里介绍的是
    ListProperty
    对象


    appengine对象包含一个电子邮件地址,可以使用
    .email()
    方法注销该电子邮件地址。

    这部分回答得很好,但我的问题也是以一种有用的方式将用户存储为邀请,比如从gmail帐户的联系人列表中。然后,当被邀请的用户使用关联这两个用户的帐户登录到站点时。我想对我来说,问题是:当用户包含和电子邮件时,电子邮件不是用户。这就是我不使用谷歌用户身份验证的原因之一。我自己做的,只是储存电子邮件地址。我不喜欢它的另一个原因是,它会把你从网站带到一个非品牌的页面来登录。但是,使用谷歌认证的一个好处是,他们可以为你验证用户的电子邮件。所以我跳过了使用用户对象,只存储带有StringListPropertyPoint的电子邮件字符串,这可能就足够了。