2017-09-12 16 views
0

私のDjangoプロジェクトでは、1つのフォームでDateInputウィジェットを使用するための特定のフィールドを指定する通常のform.pyがあります。ブラウザで設定されたDjango DateInputデフォルト

これはうまくいきます - ページを参照すると、カレンダービューから日付をクリックして選択できる空の日付フィールドが表示されます。

ここでは、コンピュータの現在の日付を使用しているユーザーのために自動入力したいと思います。サーバー側のデフォルト値ではなく、おそらくJavascriptなどで設定されたブラウザ側の値です。

どうすればいいですか?

<form action="/new_case/" method="post"> 
{% csrf_token %} 
{{ form }} 
<input type="submit" value="Submit" /> 

EDIT:JavaScriptを使用して支援するためのクロス派遣の蓋に巨大なおかげ

は、基本的にこれは私のフォームのテンプレートです。相続人1はjQueryの依存せずにDjangoのフォームテンプレートで使用するためにそれをラップする方法を、答えのこの種を探してここに来て、誰のために:

<script> 
document.addEventListener("DOMContentLoaded", function(event) { 
var dt = new Date(); 
var double_digit_day = ('0' + dt.getDate()).slice(-2); 
var double_digit_month = ('0' + (dt.getMonth()+1)).slice(-2); 
var currentDate = dt.getFullYear() + '-' + double_digit_month + '-' + double_digit_day; 
document.getElementById('id_date').value = currentDate; 
}); 
</script> 
「日付」は、フィールドの名前になり

をフォームが基づいている元のモデル。シングルフォームのページ上の要素のidは、モデルの日付フィールドに 'date'という名前が付いていれば、単純に 'id_date'になります。

+0

あなたはそれを行うにはJavaScriptを使用することができます。 –

+0

はい、私は何とかできると確信しています。私は方法が分かりません。 Djangoは{{form}}の拡張を担当していますので、このコードをフォームのテンプレートに記述する必要があります。これは本質的に私が助けを望んでいるものです - 形式のためのこのJavascriptコードを含むようにフォームテンプレートを変更する方法 – qeadz

+0

私の更新された答えをチェックしてください。 'toISOString()'は、ローカル日付ではなく、UTC日付を返します。正しいローカル日付を取得することは、より冗長な方法です。 –

答えて

0

。このようなものをページに追加するだけです。複数の日付入力がある場合、正しい入力を見つけるクエリーセレクタを使用します。

var dateinput = document.querySelector('input[type=date]') 
 
var dt = new Date() 
 
var dateString = dt.getFullYear() + '-' + ('0' + (dt.getMonth() + 1)).slice(-2) + '-' + ('0' + dt.getDate()).slice(-2) 
 
dateinput.value = dateinput.value || dateString
<form> 
 
<input type='date' /> 
 
</form>

0

model formsを使用している場合は、私が提案できる最も良いことは、の下にのコードを使用することです。更新するたびに今日の日付と更新日を書き留めてください。あなたのモデル

pub_date = models.DateTimeField('date published', auto_now_add=True) 
updated = models.DateTimeField('date updated', auto_now=True) 

代わりにあなたは日付の入力を取り込むためにはJavaScriptを使用することができます

class YourModel(models.Model): 
    . . . . 

    created = models.DateField() 
    updated = models.DateField() 

    def save(self): 
     if not self.id: 
      self.created = datetime.date.today() 
     self.updated = datetime.date.today() 
     super(YourModel, self).save() 
+0

それでも、サーバーが日付と考えるものを記入するものです。私はそれが今起こっている。私は、ユーザーが記入するフォームを最初に提示されたときに、現時点の日付が何であってもそれらを参考に提案することを期待しています*。 – qeadz