2009-10-18 8 views
0

J'ai le problème suivant. J'ai une classe de contact que les différents utilisateurs peuvent marquer avec leurs propres sujets:problème avec le filtrage dans une liste déroulante propertyproperty - Django

class Contact(db.Model): 
    contact_date = db.DateProperty(auto_now_add=True) 
    remarks = db.TextProperty() 
    topic = db.ReferenceProperty(Topic) 
class Topic(db.Model): 
    topic = db.StringProperty(required=True) 
    description = db.TextProperty() 
    owner = db.ReferenceProperty(User, collection_name='topic_set') 
    def __unicode__(self): 
     return '%s' % (self.topic) 

Dans la forme de ce que je veux seulement montrer les sujets pour un utilisateur

class ContactForm(forms.ModelForm): 
    def __init__(self, user_filter, *args, **kwargs): 
     self.base_fields['topic'].queryset = Topic.all().filter('owner 
= ', user_filter) 
     super(ContactForm, self).__init__(*args, **kwargs) 

J'appelle alors la ContactForm de la vue comme suit:

form = ContactForm (user_filter = request.user.key())

tout cela fonctionne comme prévu. Cependant, quand je soumets le formulaire, je reçois:

Caught an exception while rendering: Unsupported type for property : 
<class 'django.http.QueryDict'> 

Est-ce que je fais quelque chose de mal? Est-ce un problème avec la mise en œuvre appengine django ? Peter

+1

Pouvez-vous nous montrer l'exception complète, et le code sur lequel il se produit? Il ne semble pas que cela ait quelque chose à voir avec le code que vous nous avez montré. –

+0

Nick, je l'ai résolu. J'ai eu ce qui suit: si request.method == 'POST': form = ContactForm (request.user.key()) ajouté des données = request.POST Merci vous m'a aidé à chercher ailleurs –

Répondre

0

Un contact peut avoir un sujet et un sujet uniquement. Comme vous l'avez expliqué:

J'ai une classe de contact que les différents utilisateurs peuvent marquer avec leurs propres sujets

Je propose la ReferenceProperty à la classe des sujets:

class Topic(db.Model): 
    contact = db.ReferenceProperty(Contact) 

maintenant un contact peut avoir plusieurs sujets. Votre exception provient de l'affectation d'une propriété à un dictionnaire de requêtes. Cela vient probablement de déclarer user_filter comme argument, mais en l'utilisant comme un argument de mots-clés. Il devrait être:

form = ContactForm(request.user.key()) 

Mais comme indiqué plus haut, d'abord, vous devez réviser vos modèles.

+0

Essayé cela mais encore ne fonctionne pas. Je suppose qu'il est lié à appengine ..... –

Questions connexes