2009-03-02 8 views
175

J'ai un modèle comme suit. J'ai également une forme de modèle pour le modèle ci-dessus comme suit.Django définit les valeurs de formulaire par défaut

class JournalForm(ModelForm): 
    tank = forms.IntegerField(widget=forms.HiddenInput()) 

    class Meta: 
     model = TankJournal 
     exclude = ('user','ts') 

Je veux savoir comment définir la valeur par défaut pour ce réservoir champ caché .. Voici ma fonction pour afficher/enregistrer le formulaire jusqu'à

def addJournal(request, id=0): 
    if not request.user.is_authenticated(): 
     return HttpResponseRedirect('/') 

    # 
    # checking if they own the tank 
    # 
    from django.contrib.auth.models import User 
    user = User.objects.get(pk=request.session['id']) 

    if request.method == 'POST': 
     form = JournalForm(request.POST) 
     if form.is_valid(): 
      obj = form.save(commit=False) 

      # 
      # setting the user and ts 
      # 
      from time import time 
      obj.ts = int(time()) 
      obj.user = user 

      obj.tank = TankProfile.objects.get(pk=form.cleaned_data['tank_id']) 

      # 
      # saving the test 
      # 
      obj.save() 

    else: 
     form = JournalForm() 

    try: 
     tank = TankProfile.objects.get(user=user, id=id) 
    except TankProfile.DoesNotExist: 
     return HttpResponseRedirect('/error/') 

    form.tank = id 
    return render_to_response('ajax/tank_addJournal.html', {'form': form}, context_instance=RequestContext(request)) 

Merci.

Répondre

313

Vous pouvez utiliser initial qui est expliqué here

Vous avez deux options, soit alimenter la valeur lors de l'appel constructeur du formulaire:

form = JournalForm(initial={'tank': 123}) 

ou définir la valeur dans la définition de la forme:

tank = forms.IntegerField(widget=forms.HiddenInput(), initial=123) 
+0

Et comment est cette variable 'initial' passée à la forme réelle? Dans le modèle de formulaire actuel, devons-nous écrire en tant que paramètre/argument? – mgPePe

+0

oui, * initial * est un paramètre nommé –

+0

wait, wut? Qu'est-ce que ça veut dire? Voulez-vous dire que, quelque part dans le _init_ de la forme, j'aurais besoin de quelque chose comme: tank = initial.tank? Ou quelque chose? Ou cela arriverait-il simplement comme par magie? – bharal

Questions connexes