2010-09-16 7 views
0

J'ai un modèle django à peu près comme indiqué ci-dessous:sous forme de modèle Django avec les lignes sélectionnées

class Event(db.Model): 
    creator = db.ReferenceProperty(User, required= True) 
    title = db.TextProperty(required = True) 
    description = db.TextProperty(required = True) 

class Ticket(db.Model): 
    user = db.ReferenceProperty(User, required = True) 
    event = db.ReferenceProperty(Event, required = True) 
    total_seats = db.IntegerProperty(required = True,default=0) 
    available_seats = db.IntegerProperty(required = True,default=0) 

Maintenant, je veux créer une forme de ce modèle qui devrait contenir les événements qui sont propres par les utilisateurs connectés seulement . Actuellement, il montre une liste déroulante avec tous les événements qui s'y trouvent. Est-il possible avec les formulaires django? Je travaille sur google app engine.

Veuillez nous suggérer.

Répondre

1

Voici comment je m'y prendrais s'il s'agissait d'une pure application Django (plutôt que d'un moteur d'application). Vous pouvez peut-être le trouver utile.

La clé consiste à remplacer la méthode __init__() de votre classe ModelForm pour fournir l'instance d'utilisateur actuellement connectée.

# forms.py 
class TicketForm(forms.ModelForm): 
    def __init__(self, current_user, *args, **kwargs): 
     super(TicketForm, self).__init__(*args, **kwargs) 
     self.fields['event'].queryset = Event.objects.filter(creator = 
      current_user) 

Vous pouvez ensuite fournir l'instance d'utilisateur lors de la création d'une instance du formulaire.

ticket_form = TicketForm(request.user) 
+0

Merci Manoj. Cela a fonctionné avec quelques petits changements. –

+0

anand, cela vous dérangerait-il de poster ce que ces «petits changements» ont fait fonctionner? Merci! – Aaron

+0

Juste le changement dans la requête pour aller chercher le résultat. comme: Event.all(). filter ('creator =', current_user) fonctionnera avec google app engine. légère différence de syntaxe dans le django pur et le moteur de l'application. –

Questions connexes