2015-08-15 50 views
1

嗨,大家好我想在用戶打開表單時預先填充日期時間字段。我還需要顯示datetime字段,因爲用戶可能需要更改它。Django表單打開時的默認值日期和時間

我試過使用initial={'trans_date': 'insert date here'},但無法設法讓它工作,我會假設我需要輸入一個datetime變量。

任何幫助將不勝感激。

trans.html

{% include 'head.html' %} 
{% include 'navbar.html' %} 
    <div class="container"> 
    Input Data 



<form method='POST' action=''>{% csrf_token %} 
    {{ form.as_p }} 


    <input type="submit" class="btn pull-right btn-success col-sm-5" value="Submit"> 
</form> 


</div> 

views.py

def home(request): 

    form = TransactionForm(request.POST or None) 

    if form.is_valid(): 

     save_it = form.save(commit=False) 
     save_it.save() 

     return HttpResponseRedirect('/transactions/') 

    return render_to_response("trans/trans.html", locals(), context_instance=RequestContext(request)) 

forms.py

from django import forms 
from bootstrap3_datetime.widgets import DateTimePicker 
from .models import Transaction 
import datetime 

class TransactionForm(forms.ModelForm): 
    class Meta: 
     model = Transaction 
     exclude = ['ip'] 
     labels = { 
      'amount':'Amount', 
      'trans_date':'Date of Transaction' 
     } 
     widgets = { 
      'trans_date': DateTimePicker(options={"format": "YYYY-MM-DD HH:mm", "pickSeconds": False}, 
             attrs={"placeholder": "Placeholder text"},), 
     } 

     #fields = "__all__" 
     #fields = ['for_you', 'first_name', 'last_name', 'email'] 

models.py

class Transaction(models.Model): 
    trans_date = models.DateTimeField(auto_now=False, auto_now_add=False) 
    trans_type = models.CharField(max_length=120, null=True, blank=True) 
    category = models.ManyToManyField(Category) 
    amount = models.IntegerField() 
    description = models.TextField(null=True, blank=True) 
    timestamp = models.DateField(auto_now_add=True, auto_now=False) 
    updated = models.DateField(auto_now_add=False, auto_now=True) 
    ip = models.CharField(max_length=250, blank=True, null=True) 

    def __unicode__(self): 
     return smart_unicode(self.trans_type) 

回答

1

在表單的init方法

def __init__(self, *args, **kwargs): 
    super(TransactionForm, self).__init__(*args, **kwargs) 
    self.fields['trans_date'].initial = #pre populated field. 

,這會使得新日期的形式,當窗體保存它將在模型進行更新。

+0

謝謝@Othaman。我用你的代碼和import datetime一起 – Jimmyn

相關問題