2010-04-30 17 views
0

J'ai regardé autour d'un peu pour savoir comment faire ceci. Essentiellement, j'ai un modèle:Comment utiliser un objet ListProperty (users.user) dans un djangoforms.ModelForm sur Google AppEngine?

class SharableUserAsset(db.Model): 
    name = StringProperty() 
    users = ListProperty(users.User) 

Mes questions sont les suivantes:

  1. Quelle est la meilleure façon d'associer les utilisateurs à cette valeur où ils ne sont pas authentifiées, visa vi invitation de la liste de contacts, etc.?
  2. Existe-t-il un moyen raisonnable de présenter un contrôle de liste facilement dans un djangoforms.ModelForm?
  3. Une fois qu'un utilisateur se connecte, je veux être en mesure de vérifier si cet utilisateur est dans la liste de n'importe quel nombre d'enregistrements de classe SharableUserAsset, comment faire?
  4. L'utilisateur évalue-t-il une correspondance avec une adresse e-mail ou existe-t-il un moyen de rechercher un utilisateur valide par rapport à une adresse e-mail?

Répondre

1

Dans une requête, la comparaison d'une propriété de liste à une valeur effectue le test contre les membres de la liste: list_property = tests de valeur si la valeur apparaît partout dans la liste

http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#ListProperty

Donc, pour trouver tous les SharableUserAsset s associés à l'utilisateur actuel il suffit de demander comme:

user = users.get_current_user() 
assets = SharableUserAsset.gql("WHERE users = :1", user) 

est ici another reference traitant ListProperty objets. Un objet App Engine User contient une adresse e-mail et l'adresse e-mail peut être supprimée à l'aide de la méthode .email().

+0

Bonne réponse à cette partie, mais ma question est aussi un peu plus sur le stockage de l'utilisateur d'une manière utile comme une invitation, disons à partir de la liste de contacts d'un compte Gmail. Ensuite, lorsque l'utilisateur qui a été invité arrive sur le site connecté avec ce compte associant les deux. Je suppose que pour moi le problème est le suivant: lorsqu'un utilisateur contient et envoie un e-mail, un e-mail n'est pas un utilisateur. – Gabriel

+0

C'est l'une des raisons pour lesquelles je n'utilise pas l'authentification de l'utilisateur Google. J'ai fait le mien, et je stocke juste les adresses e-mail. Une autre raison pour laquelle je ne l'aime pas, c'est que cela vous amène hors site à une page sans marque pour vous connecter. Mais, une bonne chose à propos de l'authentification de Google, c'est qu'ils valident l'email de l'utilisateur pour vous. Donc, j'ai simplement sauté en utilisant des objets utilisateur, et ne stocker que les chaînes de messagerie avec StringListProperty – Robert

+0

Point pris, cela devrait être suffisant pour l'instant. – Gabriel