11

DateTimeFieldin で使用するとModelForm、テキスト フィールドのように見えます。管理者でそれらをどのように見せることができますか? (管理者に移動してショーを追加すると、フィールドが日付フィールドとして表示されます)

# models.py
class Show(models.Model):
    ...
    start_time = models.DateTimeField("Event Time")
    sale_end_time = models.DateTimeField("Sale End Time")

class ShowForm(ModelForm):

    class Meta:
        model = Show 

# views.py
def createshow(request):
    if request.method == 'POST':
        form = ShowForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/showsaved')
    else:
        form = ShowForm()
        return render(request, 'BizCreateShow.html', {'ShowForm' : form})

テンプレートでは:

<form class="form-horizontal well" action="" method="post">
 {% csrf_token %}
    {{ ShowForm }} </br>
    <input type="submit" value="Submit">
</form>
4

2 に答える 2

9

これは、django ウィジェットで行うことができます。実装は非常にシンプルで簡単です。以下は、ウィジェットを使用してこれを使用する方法の詳細です。

forms.py

from django.contrib.admin import widgets

class ShowForm(ModelForm):
    class Meta:
        model = Show 
    def __init__(self, *args, **kwargs):
        super(ShowForm, self).__init__(*args, **kwargs)
        self.fields['start_time'].widget = widgets.AdminSplitDateTime()
        self.fields['sale_end_time'].widget = widgets.AdminSplitDateTime()

テンプレート

<script type="text/javascript" src="/my_admin/jsi18n/"></script>
<script type="text/javascript" src="/media/admin/js/core.js"></script>

<link rel="stylesheet" type="text/css" href="/media/admin/css/forms.css"/>
<link rel="stylesheet" type="text/css" href="/media/admin/css/base.css"/>
<link rel="stylesheet" type="text/css" href="/media/admin/css/global.css"/>
<link rel="stylesheet" type="text/css" href="/media/admin/css/widgets.css"/>

これです。よくわからない場合はお知らせください。または、エラーに直面しています。

于 2013-03-26T18:52:04.647 に答える
3

おそらく、jQuery UI のdatepicker ウィジェットのようなものを使用する必要があります。

日付ピッカーは、標準フォームの入力フィールドに関連付けられています。入力に焦点を当てる (クリックするか、Tab キーを使用する) と、インタラクティブなカレンダーが小さなオーバーレイで開きます。日付を選択するか、ページの他の場所をクリックする (入力をぼかす) か、Esc キーを押して閉じます。日付を選択すると、フィードバックが入力の値として表示されます。

于 2013-03-26T19:17:26.697 に答える