2009-03-02 88 views
175

我有一個模型如下。Django設置默認表單值

class TankJournal(models.Model): 
    user = models.ForeignKey(User) 
    tank = models.ForeignKey(TankProfile) 
    ts = models.IntegerField(max_length=15) 
    title = models.CharField(max_length=50) 
    body = models.TextField() 

我也有上述模型的模型形式如下。

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

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

我想知道如何設置爲隱藏坦克字段的默認值。這裏是我的函數來顯示/保存表單到目前爲止

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)) 

感謝。

回答

313

您可以使用初始這是解釋here

你有兩個選擇要麼調用形式的構造函數時填充值:

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

或設定值的形式定義:

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

怎麼是變量`initial`傳遞給實際的形式?在實際的表單模型中,我們是否必須寫作參數/參數? – mgPePe 2011-05-04 12:03:26