0

DateTimePicker をインストールしてインポートし、Django DateTime フィールドのウィジェットとして使用しました

フィールドをクリックすると、日時が 07/30/2020 4:33 PM の形式で表示されます。

ただし、2020-07-30 16:33 の形式にする必要があるため、モデルは入力を受け入れません。フォームウィジェットを操作してこのフォーマットを表示する方法はありますか?

フォーム.py:

from django import forms
from .models import BlogPost

from tempus_dominus.widgets import DatePicker, TimePicker, DateTimePicker

class BlogPostModelForm(forms.ModelForm):

    publish_date = forms.DateTimeField(
        widget=DateTimePicker(
            options={

                'useCurrent': True,
                'collapse': False,

                # Calendar and time widget formatting
                'time': 'fa fa-clock-o',
                'date': 'fa fa-calendar',
                'up': 'fa fa-arrow-up',
                'down': 'fa fa-arrow-down',
                'previous': 'fa fa-chevron-left',
                'next': 'fa fa-chevron-right',
                'today': 'fa fa-calendar-check-o',
                'clear': 'fa fa-delete',
                'close': 'fa fa-times'
            },
            attrs={
        
                'append': 'fa fa-calendar',
                'icon_toggle': True,
            }
        )
    )



    class Meta:
        model = BlogPost
        fields = ['title','image', 'slug', 'content', 'publish_date']

    def clean_title(self, *args, **kwargs):
        instance = self.instance
        print('instance is: ',instance)
        title = self.cleaned_data.get('title')
        qs = BlogPost.objects.filter(title__iexact=title)
        if instance is not None:
            qs = qs.exclude(pk=instance.pk) # id=instance.id

        if qs.exists():
            raise forms.ValidationError("This title has already been used. Please try again.")
        return title 

フォーム.html:

<!doctype html>
{% extends "blog/base.html" %}
{% load static %}
{% load crispy_forms_tags %}

{% block head_title %}
{{title}}
{% endblock %}

{% block content %}

{% if title %}
    <h1>{{ title }}</h1>
{% endif %}

<form method='POST' enctype="multipart/form-data" action='.'> {% csrf_token %}
    {{ form|crispy }}
    {{ form.media }}

    <button type='submit'>Send</button>
</form>


{% endblock %}


4

1 に答える 1

1

オプションに "format": "YYYY-MM-DD HH:mm" を追加してみてください。

于 2020-09-03T19:43:37.307 に答える