2012-08-15 69 views
1

我有一個model.py:如何填充HTML中的Django表單字段?

class usercommand(models.Model): 
user = models.ForeignKey(User, blank=False) 
a_field = models.PositiveIntegerField(null=True, blank=True) 
timestamp = models.DateTimeField(blank=True, null=True) 

相關的,我使用創建的Django模型形式user輸入隱藏字段。 forms.py:

class ApplicationForm(forms.ModelForm): 
class Meta: 
    model = userCommand 
    widgets = { 
     'user': forms.HiddenInput() 
    } 

正如你可以看到,有可用於獲取用戶輸入的三個字段。但我充滿了用戶領域views.py

def views_method(request, object_id): 
if request.method == 'POST': 
    form = ApplicationForm(request.POST) 
    if form.is_valid(): 
     form_inst = form.save(commit=False) 
     form_inst.user = request.user 
     form_inst.save(); 
     return HttpResponseRedirect(reverse('user_list')) 
else: 
    form = ApplicationForm() 

extra_context = { 
    'form':ApplicaitonForm(initial={'user': request.user.pk}) 
} 
return direct_to_template(request, 'template/remote.html', 
          extra_context=extra_context) 

現在我在用我的remote.html

<form action="" method="POST"> 
{{ form.as_p }} 
<input type="submit" value="{% trans "Add " %}" /> 
</form> 

什麼,我需要通過書面jQuery中以下選擇器來填補模板級別時間戳字段:

<input class="time" type="text" name="start" id="start" /> 
$('input.time').timepicker(); 

但我不能理解,我該怎麼做呢?因爲我使用{{form.as_p}}。我將如何使用此Jquery代碼填充來自timestamp字段。

如果我沒看錯的話,可以通過下面的代碼做到這一點:

$('#id_timestamp').val($('#time').val()) 

其中id_timestamptimestamp場的ApplicationForm的ID。但是,我應該如何編寫代碼,以便我可以在​​的template級別填寫其餘字段。

+0

如果我理解正確的話,你只需要啓動實際時間字段的時間選擇器:'$(「#id_timestamp」)。 timepicker()' – 2012-08-15 12:38:51

+0

@ TimmyO'Mahony,是的,我們可以通過$('#id_timestamp')。timepicker()來完成。這裏#id_timestamp是ApplicationForm類中timestamp字段的標識。我不喜歡用我的Django窗體? – 2012-08-15 12:44:17

+0

爲什麼要在單獨的字段上運行timepicker,然後複製結果?爲什麼不直接在窗體的時間字段上運行timepicker?您遇到的問題是您不知道如何將小部件返回的時間轉換爲兼容'DateTimeField'的合成器?否則,我不認爲我理解問題 – 2012-08-15 12:49:02

回答

2
<form action="" method="POST"> 
{{ form.as_p }} 
<input type="submit" value="{% trans "Add " %}" /> 
</form> 
<script> 
$(document).ready(function(){ 
    $('#id_timestamp').timepicker(); 
}); 
</script> 
+0

感謝您的回覆,如果我沒有錯,那麼我應該也添加jquery庫路徑? – 2012-08-15 12:58:45

+0

是的,如果你想使用他們的日期/時間選擇器,你將需要jQuery庫和jQuery UI:http://jqueryui.com/demos/datepicker/ – 2012-08-15 13:00:44

+1

這是一個替代日期/時間選擇器庫:http:/ /trentrichardson.com/examples/timepicker/ – 2012-08-15 13:01:59

0

您可以使用SplitDateTimeWidget作爲時間戳字段。然後在一個模板,你可以通過$('#id_timestamp_0').timepicker();什麼查看在時間的輸入像