2017-05-17 11 views
0

私はほぼ完全にDjangoとWeb開発に慣れていますので、私を助けてください。私はちょうど2つの日付(開始日と終了日)とテキスト入力をとるDjangoのフォームを作成したいと思っています。私は私のプログラムにdaterangepickerを取得するためにすべてを試みたが、私は表示するdaterangepickerを取得するか、フォームにHTML入力を渡すことができない、または私は表示するdaterangepickerを取得できません。基本的には、代わりにカレンダーを使用して2つの日付を選択できるようにしたいので、必要でない場合はdaterangepickerを実装する必要はありません。ここで私はこれまで持っているものです。datanangepicker入力をdjango形式に渡すにはどうすればよいですか?

views.py

from .forms import HyugaRequestForm 

def create_req(request): 
    name = request.user.username 
    form = HyugaRequestForm(request.POST or None) 
    if form.is_valid(): 
     instance = form.save(commit = False) 
     instance.name = name 
     instance.s_date = form.cleaned_data.get('Start_Date') 
     instance.e_date = form.cleaned_data.get('End_Date') 
     instance.save() 
    context = {'form':form,} 
    return render(request,'timeline/hyuga_requests_form.html', context) 

forms.py

from django import forms 
from .models import Hyuga_Requests 
from django.forms import ModelForm 
from django.forms.extras import SelectDateWidget 

class HyugaRequestForm(forms.ModelForm): 
    Start_Date = forms.DateField(widget=SelectDateWidget) 
    End_Date = forms.DateField(widget=SelectDateWidget) 

    class Meta: 
     model = Hyuga_Requests 
     fields = ['reason'] 

models.py

from __future__ import unicode_literals 
from django.db import models 

class Hyuga_Requests(models.Model): 
    name = models.CharField(max_length=50) 
    s_date = models.DateField(auto_now=False, auto_now_add = False) 
    e_date = models.DateField(auto_now=False, auto_now_add = False) 
    reason = models.TextField(max_length=500) 

    def __unicode__(self): 
     return self.name 

テンプレート

<div class='container'> 
    <h1> Request Form </h1> 
    <form method="post"> 
     {% csrf_token %} 
     {{ form.as_p }} 
     <button type='submit'>Submit Request Form</button> 
    </form> 
</div> 

お問い合わせください

答えて

1

s_datee_dateのプロパティをモデルからモデルフォームに渡さないでください。あなたのフォームでは、Start_DateEnd_Dateの新しいフィールドを定義しますが、実際のモデルには関連付けられていません。

は、このようなあなたの forms.pyを変更

from django import forms 
from django.forms import ModelForm # EDIT: this import is needless 
from django.forms.extras import SelectDateWidget 

from .models import Hyuga_Requests 


class HyugaRequestForm(forms.ModelForm): 
    class Meta: 
     model = Hyuga_Requests 
     fields = ('reason', 's_date', 'e_date') 
     widgets = { 
      's_date': SelectDateWidget(), 
      'e_date': SelectDateWidget(), 
     } 

は今、あなたは、モデルのフォームにフィールドs_datee_dateを渡し、彼らのためにウィジェットを設定します。

答えに加えて、あなたのコードに導入したいくつかの悪い習慣を指摘したいと思います。それは命名規則に関するものであり、それらは非常に重要です。

クラス名の場合、いわゆるパスカルケース:Hyuga_RequestsHyugaRequestsである必要があります。

クラスのプロパティ名はsnake_caseに書かれています。Start_Dateは良くないので、start_dateにしてください。また、s_dateはあいまいかもしれませんが、フルネームを書き出してください:start_date

インポートを構造化し、最終的には空白行で区切ります。モデルクラスのインポートをどのようにプルダウンしたかを確認してください。

幸運を祈る!

0

あなたはすでにあなたのサイトにbootstrapを使用して、daterangepickerに基づいており、カスタマイズのトンを提供し、非常によく文書化されているdjango-bootstrap3-daterangepickerを使用することができます強力な日付範囲ピッカーをしたい場合。

関連する問題